300x250
GROUP BY 구문에서 **GROUP BY a**와 **GROUP BY a, b**의 차이는 데이터를 그룹화하는 기준의 범위에 있습니다.
GROUP BY a
- 컬럼 a를 기준으로 데이터가 그룹화됩니다.
- 동일한 값을 가진 a의 모든 행이 하나의 그룹으로 처리됩니다.
- a만 그룹화되므로 다른 컬럼 값은 무시됩니다(집계 함수 사용 시).
예제
SELECT a, COUNT(*) AS cnt
FROM my_table
GROUP BY a;
결과 예시:
a | cnt |
1 | 3 |
2 | 2 |
3 | 4 |
- 테이블의 모든 행에서 a의 값이 같은 데이터가 한 그룹으로 계산됩니다.
- 그룹별로 행의 개수를 계산한 결과를 보여줍니다.
GROUP BY a, b
- 컬럼 a와 b를 조합하여 그룹화합니다.
- a와 b의 조합이 동일한 행만 같은 그룹으로 처리됩니다.
- 더 세부적으로 데이터를 그룹화합니다.
예제
SELECT a, b, COUNT(*) AS cnt
FROM my_table
GROUP BY a, b;
결과 예시:
a | b | cnt |
1 | x | 2 |
1 | y | 1 |
2 | x | 1 |
2 | y | 1 |
3 | z | 4 |
- a와 b의 조합(1, x, 1, y, ...)이 동일한 데이터만 그룹으로 묶입니다.
- 각 조합별로 행의 개수를 계산한 결과를 보여줍니다.
차이 요약
구분GROUP BY aGROUP BY a, b
그룹 기준 | 컬럼 a 값으로 그룹화 | 컬럼 a와 b 값의 조합으로 그룹화 |
결과 그룹 개수 | a의 고유값 개수 | a, b 조합의 고유값 개수 |
세부 수준 | 상위 수준의 그룹화 | 더 세부적인 그룹화 |
실제 데이터 예제
테이블 데이터
a | b | value |
1 | x | 10 |
1 | x | 20 |
1 | y | 30 |
2 | x | 40 |
2 | y | 50 |
3 | z | 60 |
GROUP BY a 실행
SELECT a, SUM(value) AS total_value
FROM my_table
GROUP BY a;
결과:
a | total_value |
1 | 60 |
2 | 90 |
3 | 60 |
- 컬럼 a를 기준으로 그룹화하여 각 그룹의 value 합계를 계산.
GROUP BY a, b 실행
SELECT a, b, SUM(value) AS total_value
FROM my_table
GROUP BY a, b;
결과:
a | b | total_value |
1 | x | 30 |
1 | y | 30 |
2 | x | 40 |
2 | y | 50 |
3 | z | 60 |
- 컬럼 a와 b의 조합(a, b)을 기준으로 그룹화하여 각 조합의 value 합계를 계산.
요약
- GROUP BY a: 단일 컬럼 기준으로 데이터를 그룹화.
- GROUP BY a, b: 두 개 이상의 컬럼 조합으로 데이터를 더 세부적으로 그룹화.
- 사용 목적:
- 상위 레벨 집계(GROUP BY a).
- 세부 레벨 집계(GROUP BY a, b).
300x250
'IT > DB' 카테고리의 다른 글
MySQL SQL 오류코드 Error Code: 1046. No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar (1) | 2024.12.05 |
---|---|
AND EXISTS (SELECT 1 FROM 테이블) 쿼리 조건 뜻? (0) | 2024.12.04 |
데이터베이스 SQL JOIN, LEFT JOIN 차이는? (0) | 2024.12.03 |
DBMS 뜻? 종류? (1) | 2024.11.27 |
데이터베이스 SQL COALESCE 함수 사용하는 방법 (0) | 2024.11.25 |