MySQL中的WITH ROLLUP疑问 5C

版本:mysql V 8.0.12 for Win64 on x86_64 (MySQL Community Server - GL)

表:std_2

sno sname sage
1001 zhangsan1 19
1002 zhangsan2 21
1003 zhangsan3 21
1004 zhangsan4 21
1005 zhangsan5 18
1006 zhangsan6 23
1007 zhangsan7 22
1008 zhangsan8 22
1009 zhangsan9 23
1010 zhangsan10 21

对sage进行分类组合,10 ~ 19岁一个区间(2),20 ~ 29岁一个区间(8),并求总数(10):

 SELECT FLOOR(sage/10)*10 AS age_area, COUNT(FLOOR(sage/10)) AS area_count FROM std_2 GROUP BY FLOOR(sage/10) WITH ROLLUP;

结果为下图,为何最后一行第一列不是“NULL”呢?
图片说明

另发现,如果在“FLOOR(sage/10)*10”处去掉“*10”,结果对应位置倒是“NULL”,如下图,
图片说明

还请高手赐教为何有这样的区别,多谢!

4个回答

因为你的分组值跟你的展示值是不一样的,不信你加一个FLOOR(T001/10)在前面

floor函数的用法是干嘛 去掉小数部分 保留整数部分 比如你的结果小于1 0.111 去掉 111 不久等于 null

qq_37181771
77_XQ floor函数的用法是干嘛 去掉小数部分 保留整数部分 比如你的结果小于1 0.111 去掉 111 不久等于 null
大约 2 年之前 回复
weixin_36394146
無憂炎武大帝 嗯,是,我知道 FLOOR 是取整,那OK,你看哈,在下图中 FLOOR(XXXX) 我没有乘以 10,所以按你的说法是NULL,那为何上图中 FLOOR(XXXX) * 10 之后就是30了呢?NULL * 10 = 30?
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问