我的表雇主有这样的数据。
+--------------+--------+
| 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,并提前致谢。
答案 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