选择具有自定义条件的数据

时间:2014-07-04 05:37:44

标签: mysql select count group-by

我的表雇主有这样的数据。

+--------------+--------+
| BANDINDIVIDU | GENDER |
+--------------+--------+
| I            | M      |
| I            | F      |
| I            | M      |
| I            | M      |
| I            | F      |
| I            | M      |
| II           | M      |
| II           | M      |
| II           | M      |
+--------------+--------+

我尝试根据BANDINDIVIDU列计算数据,因此数据看起来像这样..

+--------------+--------+--------------+
| BANDINDIVIDU | GENDER |COUNT(GENDER) |
+--------------+--------+--------------+
| I            | M      | 4            |
| I            | F      | 2            |
| II           | M      | 3            |
| II           | F      | 0            |
+--------------+--------+--------------+

我使用此sql按BANDINDIVIDU和GENDER

对数据进行分组
SELECT BANDINDIVIDU, GENDER from employer GROUP BY BANDINDIVIDU, GENDER;

但是我得到了结果。

+--------------+--------+--------------+
| BANDINDIVIDU | GENDER |COUNT(GENDER) |
+--------------+--------+--------------+
| I            | M      | 4            |
| I            | F      | 2            |
| II           | M      | 3            |
+--------------+--------+--------------+

M GENDER的数据BANDINDIVIDU未显示.. 我已经尝试使用正确的连接,但数据结果仍然是错误的。 我正在使用mysql,并提前致谢。

2 个答案:

答案 0 :(得分:1)

这些结果在技术上是正确的。数据库只能使用它们提供的数据。试图分组' II'和' F'当没有数据基于模式而不是基于数据的时候,就在一起。

我的建议是创建一个专门用于查找模式的查询,例如' M'和' F'。像这样:

SELECT DISTINCT GENDER FROM employer

只是注意,纯粹在SQL中设置模式可能会导致过多的复杂查询。如果你能够,我强烈建议你使用某种编码和使用SQL进行数据检索来完成模式工作。

答案 1 :(得分:0)

您也可以这样做 - 但我认为Bryan关于使用应用程序级代码处理逻辑的建议是正确的......

SELECT BANDINDIVIDU 
     , SUM(gender='M') M
     , SUM(gender='F') F 
  FROM my_table 
 GROUP 
    BY bandindividu;

请注意,关系表需要PRIMARY KEYs