학습 자료

중첩 집계와 DISTINCT

SQL에서는 DISTINCT와 집계 함수를 함께 사용할 수 있고, 고급 요약과 비교를 위해 중첩 쿼리(서브쿼리)도 사용할 수 있습니다.


집계 함수와 DISTINCT

COUNT()AVG() 같은 함수 안에서 DISTINCT를 사용하면 중복을 제거할 수 있습니다.

지역별 고유 고객 수 세기
SELECT COUNT(DISTINCT client_id) FROM client_orders;

COUNT(DISTINCT 고객_id)는 주문을 한 고유 고객의 수를 반환합니다.

아래는 AVG()DISTINCT를 함께 사용하는 예시입니다.

고유한 주문 금액의 평균
SELECT AVG(DISTINCT order_total) FROM client_orders;

AVG(DISTINCT 주문_총액)는 중복되는 금액을 제외한 고유한 주문 금액만으로 평균을 계산합니다.

AVG(DISTINCT column)AVG(column)과 동일하지 않습니다. 전자는 중복 값을 제외합니다.


DISTINCT와 UNIQUE의 차이는 무엇인가요?

DISTINCTUNIQUE는 거의 동일합니다. 둘 다 결과 집합에서 중복을 제거합니다.

주요 차이점은 다음과 같습니다.

  • SELECT에서: DISTINCT가 SQL 표준입니다. UNIQUE는 일부 시스템에서만 지원되는 비표준 동의어입니다.
  • CREATE TABLE에서: UNIQUE만 유효합니다. 이는 쿼리 수식어가 아니라 제약조건이기 때문입니다.

중첩 집계(서브쿼리)

이미 집계된 결과를 다시 집계해야 할 때는 서브쿼리를 사용합니다.

서브쿼리는 다른 쿼리 안에 포함된 쿼리입니다.

아래는 시도(지역)별 주문 평균값을 구한 뒤, 그중 가장 높은 값을 찾는 예시입니다.

주문 평균값이 가장 높은 시도 찾기
SELECT MAX(avg_total) FROM ( SELECT region, AVG(order_total) AS avg_total FROM clients JOIN client_orders ON clients.id = client_orders.client_id GROUP BY region ) AS region_averages;

내부 쿼리는 시도별 주문 평균값을 계산하고, 외부 쿼리는 그중 최댓값을 찾습니다.

Quiz
0 / 1

SQL에서 집계 함수와 함께 DISTINCT를 사용하는 주된 목적은 무엇인가요?

쿼리 실행 속도를 높이기 위해서.

계산에 모든 행을 포함하기 위해서.

계산에서 중복 값을 제거하기 위해서.

결과를 특정 열로 그룹화하기 위해서.

학습 자료

AI 튜터

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

DB 테이블 구조

실행 결과