Grouping by分组集温习_2
疫情时期看过,最近再温习一下
--group by 子句中的cube, rollup, --这样理解: cube立方(既然是立方,就是变多了), rollup卷起,包起来(按字面意思理解)
IF OBJECT_ID('dbo.Orders', 'U') IS NOT NULL DROP TABLE dbo.Orders; GO CREATE TABLE dbo.Orders ( orderid INT NOT NULL, orderdate DATE NOT NULL, -- prior to SQL Server 2008 use DATETIME empid INT NOT NULL, custid VARCHAR(5) NOT NULL, qty INT NOT NULL, CONSTRAINT PK_Orders PRIMARY KEY(orderid) ); INSERT INTO dbo.Orders(orderid, orderdate, empid, custid, qty) VALUES (30001, '20070802', 3, 'A', 10), (10001, '20071224', 2, 'A', 12), (10005, '20071224', 1, 'B', 20), (40001, '20080109', 2, 'A', 40), (10006, '20080118', 1, 'C', 14), (20001, '20080212', 2, 'B', 12), (40005, '20090212', 3, 'A', 10), (20002, '20090216', 1, 'C', 20), (30003, '20090418', 2, 'B', 15), (30004, '20070418', 3, 'C', 22), (30007, '20090907', 3, 'D', 30);
--
1 | 2 | 3 | 4 |
SELECT empid,custid,sum(qty) as sumqty FROM Orders GROUP BY empid,custid;
|
SELECT empid,sum(qty) as sumqty FROM Orders GROUP BY empid
![]()
|
SELECT custid,sum(qty) as sumqty FROM Orders GROUP BY custid
|
SELECT sum(qty) as sumqty FROM Orders
![]()
|
1) 假设现在不想生成4个单独的结果集,而是希望生成一个统一的结果集,其中包含所有4个分组集的聚合数据,
为了实现该目标,可使用Union all 结合运算,将4个结果集合并在一起
2) 使用GROUPING BY的子句 Grouping sets将几个分组的子句都包含进来, Group by 子句可以是 Grouping sets , Cube, Rollup 从属子句
SELECT empid,custid, sum(qty) as sumqty FROM Orders GROUP BY GROUPING SETS ( (empid,custid), (empid),(custid), () );
OnionYang@
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本