WITH ScoreRanges AS (
SELECT
COALESCE(cd, 'Total') AS cd,
COUNT(*) AS count
FROM
your_table_name
WHERE
cd IN ('01', '02', '03')
GROUP BY
ROLLUP(cd)
)
SELECT
COALESCE(SBMS_YN, 'TOTAL') AS TYPE,
NVL(SUM(CASE WHEN DICU_SCR BETWEEN 0 AND 20 THEN 1 END), 0) AS SCORE1,
NVL(SUM(CASE WHEN DICU_SCR BETWEEN 21 AND 40 THEN 1 END), 0) AS SCORE2,
NVL(SUM(CASE WHEN DICU_SCR BETWEEN 41 AND 60 THEN 1 END), 0) AS SCORE3,
NVL(SUM(CASE WHEN DICU_SCR BETWEEN 61 AND 80 THEN 1 END), 0) AS SCORE4,
NVL(SUM(CASE WHEN DICU_SCR BETWEEN 81 AND 100 THEN 1 END), 0) AS SCORE5
FROM
your_table_name
WHERE
CL_CD = '03'
GROUP BY
ROLLUP(SBMS_YN)
UNION ALL
SELECT
cd,
count,
NULL AS TYPE,
0 AS SCORE1,
0 AS SCORE2,
0 AS SCORE3,
0 AS SCORE4,
0 AS SCORE5
FROM ScoreRanges
ORDER BY TYPE, cd;
CTE는 Common Table Expressions의 약자로, 일시적으로 정의된 이름이 있는 결과 집합을 나타냅니다. WITH 절을 사용하여 쿼리 내에서 임시 테이블처럼 사용할 수 있습니다. 주로 복잡한 쿼리를 단순화하고 가독성을 높이기 위해 사용됩니다.
위에서 사용한 ScoreRanges는 CTE입니다. 이 CTE는 점수 범위에 따른 건수를 계산하는 일시적인 결과 집합을 생성하는데 사용되었습니다. CTE를 사용하면 복잡한 쿼리를 단일한 부분으로 분리할 수 있어 가독성이 향상되고 쿼리를 이해하기 쉬워집니다.
'두번째 프로젝트 이야기' 카테고리의 다른 글
[엑셀 다운로드] 클릭 시 동작 원리 + 흐름 (1) | 2023.12.21 |
---|---|
서브쿼리를 사용하는 이유 (1) | 2023.11.14 |
두 날짜 입력 요소 사이의 유효성 (0) | 2023.11.14 |
oninput (0) | 2023.10.25 |
특수문자를 태그로 변경 (0) | 2023.10.25 |