mysql group by + with rollup 用法

今天发觉 网上关 with rollup的示例是错的,特地来纠正一下

select * from employee;
±-----±-----±-------±-----±-----±------------+
| num | d_id | name | age | sex | homeaddr |
±-----±-----±-------±-----±-----±------------+
| 1 | 1001 | 张三 | 26 | 男 | beijinghdq |
| 2 | 1002 | 李四 | 24 | 女 | beijingcpq |
| 3 | 1003 | 王五 | 25 | 男 | changshaylq |
| 4 | 1004 | Aric | 15 | 男 | England |
±-----±-----±-------±-----±-----±------------+

select sex,count(age) from employee group by sex with rollup;
±-----±-----------+
| sex | count(age) |
±-----±-----------+
| 女 | 1 |
| 男 | 3 |
| NULL | 4 |
±-----±-----------+

select sex,arg(age) from employee group by sex with rollup;
±-----±-----------+
| sex | arg(age) |
±-----±-----------+
| 女 | 24.0000 |
| 男 | 22.0000 |
| NULL | 22.5000 |
±-----±-----------+

上面这个null 这一行对应的 22.5000 其实是没分组之前应用函数 对 age 这一列做运算,即:(26 + 24 + 25 + 15 ) / 4 = 22.5000

select sex, max(age) from employee group by sex with rollup;
±-----±-----------+
| sex | max(age) |
±-----±-----------+
| 女 | 24 |
| 男 | 26 |
| NULL | 26 |
±-----±-----------+

所以 with rollup 最后出现的 null 这一行是针对每分组前 ,需要显示的某列运用分组后的集合运算 得出的值

以下参考链接这个用法是错的,当时用了之后一脸蒙蔽,搞清楚怎么回事之后就写出来它的真正用法了,
参考:https://www.cnblogs.com/snsdzjlz320/p/5738226.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值