DB/Oracle & tibero
DISTINCT와 GROUP BY의 차이
개발게발
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
[Oracle] 데이터 중복 제거 방법 (DISTINCT, GROUP BY)
오라클에서 데이터 조회 시 데이터 중복을 제거하기 위해서는 대표적으로 2가지 방법이 있다. DISTINCT 키워드를 사용하여 중복을 제거하는 방법과, GROUP BY 절을 사용하여 데이터 중복을 제거하는
gent.tistory.com