-
DISTINCT와 GROUP BY의 차이DB/Oracle & tibero 2022. 5. 11. 23:57
DISTINCT와 GROUP BY는 공통적으로 중복된 값을 제거하는 방법이다.
WITH t AS (
SELECT '과일' AS TYPE, '사과' AS NAME FROM dual
UNION ALL
SELECT '과일', '레몬' FROM dual
UNION ALL
SELECT '과일', '사과' FROM dual
UNION ALL
SELECT '과일', '사과' FROM dual
UNION ALL
SELECT '채소', '오이' FROM dual
UNION ALL
SELECT '채소', '당근' FROM dual
UNION ALL
SELECT '채소', '당근' FROM dual
)
SELECT TYPE, NAME FROM t;TYPE NAME 과일 사과 과일 레몬 과일 사과 과일 사과 채소 오이 채소 당근 채소 당근 TYPE : 과일, NAME : 사과 => 중복
TYPE : 채소, NAME : 당근 => 중복
- DISTINCT
WITH t AS (
SELECT '과일' AS TYPE, '사과' AS NAME FROM dual
UNION ALL
SELECT '과일', '레몬' FROM dual
UNION ALL
SELECT '과일', '사과' FROM dual
UNION ALL
SELECT '과일', '사과' FROM dual
UNION ALL
SELECT '채소', '오이' FROM dual
UNION ALL
SELECT '채소', '당근' FROM dual
UNION ALL
SELECT '채소', '당근' FROM dual
)
SELECT DISTINCT TYPE, NAME FROM t;- GROUP BY
WITH t AS (
SELECT '과일' AS TYPE, '사과' AS NAME FROM dual
UNION ALL
SELECT '과일', '레몬' FROM dual
UNION ALL
SELECT '과일', '사과' FROM dual
UNION ALL
SELECT '과일', '사과' FROM dual
UNION ALL
SELECT '채소', '오이' FROM dual
UNION ALL
SELECT '채소', '당근' FROM dual
UNION ALL
SELECT '채소', '당근' FROM dual
)
SELECT TYPE, NAME FROM t GROUP BY TYPE, NAME;DISTINCT와 GROUP BY의 결과값은 동일하다.
TYPE NAME 과일 사과 채소 오이 채소 당근 과일 레몬
DISTINCT는 단순 그룹핑 작업만 수행
GROUP BY는 그룹핑 + 정렬작업을 같이 수행
출처 : https://gent.tistory.com/222
'DB > Oracle & tibero' 카테고리의 다른 글
Group By에서 문자열 합치기 (0) 2022.05.10