发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
SQL> select emp_id,month,prd_type_id,amount2 from all_sales3 where emp_id=214 order by emp_id,month ;
EMP_ID MONTH PRD_TYPE_ID AMOUNT---------- ---------- ----------- ---------- 21 1 4 3034.84 21 1 3 6034.84 21 1 2 1034.84 21 1 5 21 1 1 10034.84 21 2 3 1944.65 21 2 4 2944.65 21 2 1 15144.65注:表中数据太多,只显示了一部分。表all_sales存放2003年每个员工每个产品每个月的销量,SQL> select emp_id,month,sum(amount)2 from all_sales3 where emp_id=214 group by emp_id,month5 order by month ;
EMP_ID MONTH SUM(AMOUNT)---------- ---------- ----------- 21 1 20139.36 21 2 21578.6 21 3 30251.32 21 4 35729.8 21 5 25358.24 21 6 28258.56 21 7 36449.36 21 8 62639.28 21 9 49418.28 21 10 80016.76 21 11 41018.92 21 12 36139.36用ROLLUP 进行分组
SQL> select emp_id,month,sum(amount)2 from all_sales3 where emp_id=214 group by rollup(emp_id,month) ;
EMP_ID MONTH SUM(AMOUNT)---------- ---------- ----------- 21 1 20139.36 21 2 21578.6 21 3 30251.32 21 4 35729.8 21 5 25358.24 21 6 28258.56 21 7 36449.36 21 8 62639.28 21 9 49418.28 21 10 80016.76 21 11 41018.92 21 12 36139.36 21 466997.84 466997.84
ROLLUP(emp_id,month):先对每个EMP_id的每个月的销量进行分组求和,相当于GROUP BY EMP_ID,MONTH,得出这个员工,每个月的销量总和,然后求这个员工一年所有的销量,相当于GROUP BY EMP_ID,最后所求所有员工的销量总和,因为查询限制只返回EMP_ID=21的数据,所以最后两条记录的值相同。group by rollup(emp_id,month) 与group by emp_id,month不同之处在于是,group by rollup(emp_id,month) 求得每个员工的月销量之后,又多做了两个工作,一是求得每个员一年所有的销量,二是求所有员工的年总销量。如果除去where emp_id=21,则最后一条记录返回所有员工的总销量,如:SQL> select emp_id,month,sum(amount)2 from all_sales3 group by rollup(emp_id,month) ;
EMP_ID MONTH SUM(AMOUNT)---------- ---------- ----------- 21 1 20139.36 21 2 21578.6 21 3 30251.32 21 4 35729.8 21 5 25358.24 21 6 28258.56 21 7 36449.36 21 8 62639.28 21 9 49418.28 21 10 80016.76 21 11 41018.92 21 12 36139.36 21 466997.84 22 1 21939.36 22 2 21078.6 23 6 15658.56 23 7 33649.3 23 11 30518.92 23 12 24139.36 23 323077.84 24 1 14669.36 24 2 28878.6 24 3 35651.32 24 10 30116.76 24 11 22621.92 24 12 24139.36 24 333370.84 25 1 7269.36 25 2 13678.6 25 11 12821.92 25 12 12639.36 25 187970.84 26 1 16568.75 26 11 14821.38 26 12 15639.37 26 228769.93 1972485.13数据太多,只显示一部分。可以看出,group by rollup(emp_id,month) 为每个员工的销量进行了汇总,得出了月销量和年销量(每个员工的最后一条),同时为所有员工进行了汇总,得出所有员工的年总销量(最后一条记录)
函数:grouping 接收列作为参数,如果列为空,则grouping返回1,否则返回0,该函数与rollup搭配使用。可以使用grouping函数对上述查询进行处理。SQL> SELECT DECODE(GROUPING(EMP_ID), 1, '所有员工', EMP_ID) EMP_ID,2 nvl2(emp_id,DECODE(GROUPING(MONTH), 1, '员工年度', MONTH),'所有员工年度') ND,3 SUM(AMOUNT)4 FROM ALL_SALES5 GROUP BY ROLLUP(EMP_ID, MONTH)6 ; EMP_ID ND SUM(AMOUNT)---------------------------------------- ---------------------------------------- -----------21 1 20139.3621 2 21578.621 3 30251.3221 12 36139.3621 员工年度 466997.8426 7 12549.3626 8 23139.2826 9 19318.2826 10 26116.9926 11 14821.3826 12 15639.3726 员工年度 228769.93所有员工 所有员工年度 1972485.13
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
Group by的语法
Group by的语法Group by的语法Select [filed1,fild2,]聚合函数(filed),[Grouping(filed),][Grouping_id(filed1,filed2,…)]From tablenameWhere condition[Group by {rollup|cube}(filed,filed2)][ha...
扩展group by语句
DNAME JOB SUM_SAL-------------- --------- ----------SALES CLERK 950SALES MANAGER 2850SALES SALESMAN 5600RESEARCH CLERK 1900RESE...
Excel中牛逼的SUMIFS函数实例详解,不看损失大!
Excel中牛逼的SUMIFS函数实例详解,不看损失大!Excel中的SUM求和函数估计没有人不会用吧?这时候用SUMIFS函数就特别简单。1、任意点选...
条件求和:sumif函数二维区域的用法
条件求和:sumif函数二维区域的用法你好,我是刘卓。在这些用法中,sumif的条件区域和求和区域都是一行或一列的区域,今天就来分享下二...
SQL SERVER中 with rollup 、with cube、grouping 统计函数用法
MySQL
SELECT IFNULL(b.城市,"总计") AS 城市,SUM(IF(b.年月=201607,b.金额,NULL)) AS 7月金额,SUM(IF(b.年月=201608,b.金额,NULL)) AS 8月金额,SUM(IF(b.年月=201609,b.金额,NULL)) AS 9月金额FRO...
mysql统计函数rollup
mysql统计函数rollup.-- 以area在area,yearMonth统计的基础上再统计SELECT yearMonth,area,sum(amount) sum_amount from incomegroup by...
SUM/SUMIF/SUMIFS有什么区别,求和函数如何选用?
SUM/SUMIF/SUMIFS有什么区别,求和函数如何选用?SUM函数:用于简单无条件求和SUMIF函数:用于单条件求和SUMIFS函数:多条件求和语法:S...
Excel函数应用篇:轻松解决Excel合并单元格无法计算
Excel函数应用篇:轻松解决Excel合并单元格无法计算。对于普通的Excel表格,如果要对齐进行求和和计数操作,只需要用Sum系列函数或者Cou...
微信扫码,在手机上查看选中内容