GROUP BY的执行顺序
例:
SELECT name,COUNT(*) FROM employee_tbl GROUP BY name;
代码的实现顺序是:先按名字进行分组,再使用COUNT()函数进行统计。其他函数,如AVG(),SUM(),也是一样的。
对上面的代码进行修改:
SELECT name,COUNT(*) FROM employee_tbl GROUP BY name WITH ROLLUP;
会获得:
对比上图可以发现多了一行name为NULL的数据,这是对上面所有数据的统计结果,WITH ROLLUP 的作用就是在统计的再进行总的统计。
想要给NULL个名字可以使用coalesce(a,b,c)函数,例如:
SELECT coalesce(name,‘总数’),SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
你会得到:
觉得coalesce(name,‘总数’),不好看,你可以给它定义一个别名:
SELECT coalesce(name,‘总数’) as name,SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
你将获得一个完美的数据表:
有错漏的地方请指出,谢谢。