MYSQL
[집계] 그룹별 소계, 총계, 비율 구하기
fabulous
2022. 5. 24. 11:18
ORACLE에서는 RATIO_TO_REPORT함수를 이용이 가능하지만,
MS-SQL에서는 불가능하다.
따라서 직접 집계를 내보도록 하겠다.
SELECT CNT_GROUP AS '그룹'
, SUM(CNT) AS '소계'
, SUM(CNT) * 100 / SUM(SUM(CNT))OVER() AS '차지 비율'
, SUM(SUM(CNT)) OVER() AS '총계'
FROM(
SELECT 10 AS CNT, 'GROUP1' AS CNT_GROUP UNION ALL
SELECT 10 AS CNT, 'GROUP1' AS CNT_GROUP UNION ALL
SELECT 60 AS CNT, 'GROUP2' AS CNT_GROUP UNION ALL
SELECT 40 AS CNT, 'GROUP2' AS CNT_GROUP UNION ALL
SELECT 40 AS CNT, 'GROUP3' AS CNT_GROUP UNION ALL
SELECT 25 AS CNT, 'GROUP3' AS CNT_GROUP UNION ALL
SELECT 15 AS CNT, 'GROUP3' AS CNT_GROUP
) A
GROUP BY CNT_GROUP
그룹 | 소계 | 차지 비율 | 총계 |
GROUP1 | 20 | 10 | 200 |
GROUP2 | 100 | 50 | 200 |
GROUP3 | 80 | 40 | 200 |
실행을 하면 위와 같은 결과가 도출된다.