关于在分组的时候select的字段为什么一定要出现在group by
举个例子
婚姻状况 | 人数 |
---|---|
已婚 | 102 |
未婚 | 98 |
假设要统计已婚未婚人数,你的sql应该是select is_marry ,count(*) from user group by is_marry
但是 如果加上一列性别
婚姻状况 | 人数 | 性别 |
---|---|---|
已婚 | 102 | |
未婚 | 98 |
在已婚和未婚里面 男女都有 ,这时候你的sql还要查出sex,但是sql是不知道这已婚102人应该是写男的还是写女的 ,因为男女都有
所以正确的应该是再加上一个分组条件,也就是为什么分组的时候select的字段为什么一定要出现在group by
婚姻状况 | 人数 | 性别 |
---|---|---|
已婚 | 100 | 男 |
已婚 | 2 | 女 |
未婚 | 90 | 男 |
未婚 | 8 | 女 |
你的sql应该是 select is_marry , count(*) , sex from user group by is_marry , sex ;