mysql中group by里面的问题

mysql中group by里面的问题,第1张

GROUP BY dept,name 的意思,就是先按dqpt分组,如果出现dept相同的,再按name分组,也就是说除非出现dept和name都相同的记录才会合为一组,否则的话是不会合在一起的,这样的话显示出的name就只有一个了。

你用现实生活中的例子来理解一下就很明白啦:比如说你们班上的同学如果按性别来分组,可以分为两组,如果按照姓名来分组,那就基本上有多少个同学就有多少组(除非有同名同姓的),那如果按性别和姓名同时分组呢,那分的组就是同学数的两倍了,即“男的张三”一组,“女的张三”一组,“男的李四”一组,“女的李四”一组……当然,这其中有一半的组是空的,剩下的也是每一组只有一个人啊!理解没有?

所以 Group by 后面的分组字段不是随便加的,多个字段的分组是需要排列组合的,分的组数会按几何级数增长!

补充说一句:本来按名字来分组就是个愚不可及的想法了!更何况还要加上其他分组条件,这样的话基本上就是一组只有一个了!

SELECT col1, SUM(CASE WHEN col2 = 'X' then 1 else 0 end),

SUM(CASE WHEN col2 = 'Y' then 1 else 0 end)

from 表1

group by col1

即可。

例子 aa表 a b

12310

12312

1234 11

1234 14

首先 group 是用来分组的 不是过滤重复项的。重复项删除语句 DISTINCT用这个 。 select DISTINCT(a) from aa

结果就是 a

123

1234

group by用来分组的

select a, sum(b) from aa group by a

sum意思是总和。结果就是

a b

123 22

123425

语句的目的是以a为目标 需要知道 相同名字的物品 在b列一共有多少数量总和

select a,count(b) from aa group by a

count 意思行数总和 结果就是

a b

123 2

12342

语句目的是 相同名字的物品 一共有几行


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7683625.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-08
下一篇2023-04-08

发表评论

登录后才能评论

评论列表(0条)

    保存