SQL
SQL_GROUP BY, ROLLUP, CUBE
S_pot
2021. 5. 31. 11:12
SELECT [groupName] FROM buyTbl;
-- GROUP BY: 그룹별로 지정해줌, DISTINCT와 결과는 비슷하지만
-- 개념은 다르다.
SELECT [groupName]
FROM buyTbl
GROUP BY [groupName];
SELECT [groupName], price, amount FROM buyTbl;
-- GROUP BY: 그룹별로 지정해줌, DISTINCT와 결과는 비슷하지만
-- 개념은 다르다.
SELECT groupName, SUM(price*amount) AS 합
FROM buyTbl
GROUP BY [groupName];
ROLLUP 총합계를 표시
SELECT groupName, SUM(price*amount) AS 합
FROM buyTbl
GROUP BY ROLLUP(groupName);
GROUP BY ROLLUP(groupName, num): 그룹별 합계표시
SELECT userID, groupName, SUM(price*amount)
FROM buyTbl
GROUP BY ROLLUP(groupName, userID);
-- userID가 아닌 num으로 하는 이유는 중복되는
-- userID가 있어 그룹핑 되기 때문에 모든항목이 나타나지 않는다.
-- 즉, userID인 BBK가 2개이면 2개가 더해진 값으로 출력된다.
SELECT num, groupName, SUM(price*amount)
FROM buyTbl
GROUP BY ROLLUP(groupName, num);
첫번째는 groupName을 고정하고 정렬, 두번째는 userID를 고정하고 정렬한 값이다.
CUBE()
CREATE TABLE cubeTbl(prodName NCHAR(3), color NCHAR(2), amount INT);
GO
INSERT INTO cubeTbl VALUES('컴퓨터', '검정', 11);
INSERT INTO cubeTbl VALUES('컴퓨터', '파랑', 22);
INSERT INTO cubeTbl VALUES('모니터', '검정', 33);
INSERT INTO cubeTbl VALUES('컴퓨터', '파랑', 44);
GO
SELECT prodName, color, SUM(amount) AS [수량합계]
FROM cubeTbl
GROUP BY CUBE (color, prodName);