1,首先,有两个表
a:
b:
2,group by 多字段如何分组?
其实,多字段分组与单字段分组原理一样,都是对by后面的字段,具有相同的字段值进行分为一组。
若…group by X(主),Y(次)…,优先找两个字段值都相同的记录分为一组,然后,X字段值相同,Y字段值不同的,Y字段值有几种再分为几组,例如,X1大组中:X1Y1,X1Y2,X1Y3…X2大组中X2Y2,X2Y4…
3,实例,表为1中的两个表
1.问题:查询每个专业中的每个年龄的人数
解析:首先是每个专业中,所以,先对专业分组,然后是每个年龄的人数,再对年龄进行分组。select 专业,age,count(id)from (select * from a left JOIN b using(id) )ab GROUP BY 专业,age;
结果:
看渗透这个专业,在渗透大的分组下先按照年龄降序进行排列,然后年龄相同的为一组输出为一列记录。
但,为什么大数据专业排在第一?
因为大数据,第一个字的第一个字母为d.按照abcde…顺序进行排列。
2.问题:查询每个年龄中的每个专业的人数
select age,专业,count(id)from (select * from a left JOIN b using(id) )ab GROUP BY age,专业;
结果:
综合1,2问题来看:
1,进行分组时若字段值为字母,汉字,按照abc顺序进行排序,若有NULL,排在最前面(这个有兴趣的自己可以分组试试)。若为数字,则从小到大降序排列。