DB

[DB][SQL] GROUP BY절 안에 CASE

오선지♬ 2024. 7. 6. 12:55
728x90
반응형

GROUP BY 절 안에 CASE 문을 사용하는 이유는 데이터를 그룹화할 때 특정 조건에 따라 다른 그룹으로 묶기 위해서입니다. 이는 데이터를 보다 유연하게 그룹화하고 분석할 수 있게 해줍니다. CASE 문을 사용하면 다양한 조건에 따라 데이터의 그룹화 기준을 동적으로 변경할 수 있습니다.

사용 이유

  1. 조건에 따른 그룹화: 특정 조건을 기준으로 데이터를 그룹화하여 원하는 방식으로 데이터를 분류할 수 있습니다.
  2. 복잡한 그룹화 로직: 단순한 열 값이 아닌, 복잡한 논리적 조건을 사용해 데이터를 그룹화할 수 있습니다.
  3. 데이터 가공 및 변형: 그룹화하기 전에 데이터를 변형하거나 가공할 수 있습니다.

사례

다음은 CASE 문을 사용하여 데이터를 그룹화하는 예제입니다.

예제 : 연령대별 그룹화

고객의 나이를 연령대별로 그룹화하는 경우를 생각해보겠습니다.

SELECT
    CASE
        WHEN age < 20 THEN '10대'
        WHEN age BETWEEN 20 AND 29 THEN '20대'
        WHEN age BETWEEN 30 AND 39 THEN '30대'
        ELSE '40대 이상'
    END AS age_group,
    COUNT(*) AS count
FROM customers
GROUP BY
    CASE
        WHEN age < 20 THEN '10대'
        WHEN age BETWEEN 20 AND 29 THEN '20대'
        WHEN age BETWEEN 30 AND 39 THEN '30대'
        ELSE '40대 이상'
    END;

 

 

case문을 쓰지않고 alias인 age_group을 써서 그룹화하는것은?

 

SQL에서는 GROUP BY 절에 별칭(alias)을 직접 사용할 수 없습니다.

따라서, 예제에서 CASE 문을 사용하여 age_group이라는 별칭을 정의한 후,

이를 GROUP BY 절에 사용할 수는 없습니다.

대신, CASE 문을 GROUP BY 절 안에 다시 작성해야 합니다.

728x90
반응형

'DB' 카테고리의 다른 글

[DB][Oracle] sid  (0) 2024.07.14
[DB][SQL] GROUP BY 절에 CASE문을 Alias로 사용할 수 없는 현상의 대안  (0) 2024.07.07
[DB][SQL] ORDER BY 절 안에 CASE문  (0) 2024.07.05
[DB] NULL로 나누기  (0) 2024.07.04
[DB][MySQL] 0으로 나누기  (0) 2024.07.03