여러 열과 수식으로 그룹화하기
복합 그룹화 키와 계산된 값으로 그룹화하는 방법을 알아봅니다.
여러 열과 수식으로 그룹화하기은(는) CoddyKit의 무료 Coding Interview Prep 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Coding Interview Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
단일 그룹화 키를 넘어
실제 보고서에서는 한 열만으로 그룹화하는 경우가 드뭅니다. 면접관은 지원자가 복합 그룹화 키를 이해하는지 확인하기 위해 '지역별 매출'에서 '지역별 월별 매출'로 질문을 확장합니다.
규칙은 간단하게 확장됩니다. GROUP BY에 열을 더 나열하면 해당 열들의 서로 다른 조합마다 한 행이 만들어집니다.
여러 열이 의미하는 것
GROUP BY region, product라고 작성하면 그룹 키는 (region, product) 쌍입니다. 서로 다른 각 쌍이 하나의 출력 행이 됩니다.
- 지역 5개와 상품 4개가 있으면 최대 20개의 그룹이 만들어집니다.
- 실제로 나타나지 않는 조합은 행을 전혀 만들지 않습니다.
- GROUP BY에서 열의 순서는 결과 집합을 바꾸지 않으며, 때로는 실행 계획만 바꿉니다.
SELECT region, product, SUM(amount) AS total
FROM sales
GROUP BY region, product;SELECT 규칙은 여전히 지켜야 함
핵심 제약은 완화되지 않습니다. 집계되지 않은 모든 SELECT 열은 GROUP BY에 포함되어야 합니다. 복합 키를 사용할 때는 해당 열을 모두 나열하면 됩니다.
여러 키로 그룹화할 때 열 하나를 빠뜨리는 것은 면접 압박 속에서 가장 흔한 실수입니다. GROUP BY 목록을 집계되지 않은 SELECT 열과 정확히 일치시키십시오.
-- Both region and product appear in GROUP BY
SELECT region, product,
COUNT(*) AS orders,
AVG(amount) AS avg_amount
FROM sales
GROUP BY region, product;표현식으로 그룹화하기
원시 열뿐 아니라 계산된 값으로도 그룹화할 수 있습니다. 자주 나오는 요구 사항은 월별로 매출을 그룹화하는 것이며, 이는 잘라 내거나 추출한 날짜로 그룹화한다는 뜻입니다.
GROUP BY의 표현식은 SELECT의 표현식과 일치해야 합니다. 데이터베이스 엔진은 계산 결과를 기준으로 그룹화합니다.
SELECT DATE_TRUNC('month', order_date) AS month,
SUM(amount) AS monthly_total
FROM sales
GROUP BY DATE_TRUNC('month', order_date);CASE 구간으로 그룹화하기
강력한 패턴 중 하나는 CASE 표현식으로 그룹화하여 사용자 지정 구간을 만드는 것입니다. 조회 테이블 없이 '소형 / 중형 / 대형 주문' 요약을 만들 때 사용하는 방법입니다.
면접관이 이 방식을 좋아하는 이유는 CASE 논리와 파생 값에 대한 그룹화를 동시에 확인할 수 있기 때문입니다.
SELECT CASE
WHEN amount < 50 THEN 'small'
WHEN amount < 200 THEN 'medium'
ELSE 'large'
END AS bucket,
COUNT(*) AS orders
FROM sales
GROUP BY CASE
WHEN amount < 50 THEN 'small'
WHEN amount < 200 THEN 'medium'
ELSE 'large'
END;열 위치로 그룹화하기
많은 데이터베이스 방언에서는 서수 위치로 그룹화할 수 있습니다. GROUP BY 1, 2는 첫 번째와 두 번째 SELECT 열을 의미합니다. 간결하지만 취약한 방식입니다.
면접관이 이를 인정할 수도 있지만, 위험성은 언급해야 합니다. SELECT 목록의 순서를 바꾸면 그룹화도 조용히 바뀝니다. 운영 코드에서는 명시적인 표현식을 우선 사용하십시오.
-- 1 = month expression, 2 = region
SELECT DATE_TRUNC('month', order_date) AS month,
region, SUM(amount)
FROM sales
GROUP BY 1, 2;NULL은 자체 그룹을 형성함
그룹화에서 발생하는 NULL 처리의 함정이 있습니다. 그룹화 열에 NULL이 포함되면 모든 NULL 행이 하나의 그룹으로 통합됩니다.
이는 NULL이 NULL과 절대 같지 않은 동일성 비교와 다릅니다. 그룹화에서는 NULL을 '같은 것'으로 취급하여 하나의 구간을 형성합니다. 면접관은 이 겉보기 모순을 즐겨 질문합니다.
-- Rows with region IS NULL all land in one group
SELECT region, COUNT(*) AS orders
FROM sales
GROUP BY region;여러 수준을 위한 GROUPING SETS
하나의 쿼리에서 여러 그룹화 세분 수준을 만들려면 GROUPING SETS를 사용하십시오. 나열된 각 키 집합을 계산하고 결과를 결합합니다.
이는 중급에서 고급 수준임을 보여 주는 요소입니다. 세 개의 별도 쿼리와 UNION을 사용하는 대신, 하나의 문으로 지역별 합계, 상품별 합계, 전체 합계를 함께 반환할 수 있습니다.
SELECT region, product, SUM(amount) AS total
FROM sales
GROUP BY GROUPING SETS ((region), (product), ());ROLLUP과 CUBE
ROLLUP과 CUBE는 자주 사용하는 그룹화 집합을 간단히 표현한 것입니다. ROLLUP(region, product)은 지역+상품별 결과, 지역 소계, 전체 합계를 제공하므로 계층형 보고서에 적합합니다.
CUBE는 나열된 열의 가능한 모든 조합을 생성합니다. 이를 알고 있다면 실제 보고서 쿼리를 작성해 본 지원자라는 인상을 줄 수 있습니다.
SELECT region, product, SUM(amount) AS total
FROM sales
GROUP BY ROLLUP (region, product);예제: 월별 지역 보고서
지금까지의 개념을 결합해 보겠습니다. 완료된 주문만 대상으로 지역별·월별 총매출과 평균 매출을 구하고, 읽기 쉽도록 정렬합니다.
WHERE가 먼저 행을 좁히고, 복합 키가 지역과 월 표현식으로 그룹화하며, ORDER BY가 출력을 정렬합니다. 분석가 면접에서 기대되는 전형적인 완성형 답변입니다.
SELECT region,
DATE_TRUNC('month', order_date) AS month,
SUM(amount) AS total,
AVG(amount) AS avg_order
FROM sales
WHERE status = 'completed'
GROUP BY region, DATE_TRUNC('month', order_date)
ORDER BY region, month;소리 내어 추론하는 방법
복합 그룹화에 관한 질문을 받으면 키를 명시적으로 말하십시오. 'X와 Y의 조합으로 그룹화하므로, 서로 다른 (X, Y) 쌍마다 한 행을 얻습니다.'
그런 다음 집계되지 않은 각 SELECT 열이 해당 키에 포함되는지 확인하고, NULL이 하나의 그룹으로 통합된다는 점을 언급하십시오. 이러한 체계적인 설명 방식이 중급 면접에서 좋은 평가를 받습니다.
빠른 확인
복합 그룹화 키에 대해 추론해 보십시오.
요약
복합 키: 여러 열을 나열하면 서로 다른 조합마다 한 행이 만들어지며, 집계되지 않은 모든 SELECT 열은 키에 포함되어야 합니다.
- 표현식, CASE 구간 또는 서수 위치로 그룹화할 수 있습니다. 단, 위치는 취약합니다.
- 그룹화 열의 NULL은 하나의 그룹으로 통합됩니다.
GROUPING SETS,ROLLUP,CUBE는 하나의 쿼리에서 여러 그룹화 수준을 생성합니다.- 그룹화 전에 행 필터를 WHERE에 적용하십시오.
자주 묻는 질문
“여러 열과 수식으로 그룹화하기” 강의는 무료인가요?
네 — “여러 열과 수식으로 그룹화하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Coding Interview Prep 강의 전체를 잠금 해제할 수 있습니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.
“여러 열과 수식으로 그룹화하기”에서 뭘 배우나요?
복합 그룹화 키와 계산된 값으로 그룹화하는 방법을 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 Coding Interview Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Coding Interview Prep을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Coding Interview Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“여러 열과 수식으로 그룹화하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Coding Interview Prep 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Coding Interview Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- SELECT 열에 적용되는 GROUP BY 규칙
- HAVING과 WHERE 비교하기
- 여러 열과 수식으로 그룹화하기
- 그룹 개수 세기와 필터링하기