[사전캠프] 데이터 속 김서방 찾기

2024. 8. 17. 15:32내일배움캠프

※ 참고 : 과제 설명이 없어서 제목을 토대로 임의로 문제를 예상해 작성하였습니다.

문제 : '김' 씨 성을 가진 고객들의 수가 연령대별로 어떻게 되는지 확인하는 쿼리 작성

조건 : 'customers' 테이블에서 조회하며, 결과 컬럼에는 '연령대, 인원수' 가 출력되어야 하며 레코드는 '인원수' 가 제일 많은 연령대부터 순차적으로 정렬되어야 한다.

SELECT CASE WHEN age < 10 THEN '아동'
            WHEN age >= 10 AND age < 20 THEN '10대'
            WHEN age >= 20 AND age < 30 THEN '20대'
            WHEN age >= 30 AND age < 40 THEN '30대'
            WHEN age >= 40 AND age < 50 THEN '40대'
            WHEN age >= 50 AND age < 60 THEN '50대'
            WHEN age >= 60 AND age < 70 THEN '60대'
            WHEN age >= 70 AND age < 80 THEN '70대'
            WHEN age >= 80 AND age < 90 THEN '80대'
            WHEN age >= 90 AND age < 100 THEN '90대'
            ELSE '100대 이상'
       END '연령대',
       COUNT('연령대') '고객수'
FROM customers
WHERE name LIKE '김%'
GROUP BY 1
ORDER BY 2 DESC

김씨 성을 가진 고객들의 연령대와 연령별 인원수

 

WHERE 절을 통해 'name' 에 '김' 이라는 문자를 가진 레코드를 찾고, CASE 문을 통해 조건에 해당하는 'age' 값을 문자 데이터로 가공하였다. GROUP BY 를 사용해 CASE 문으로 생성한 컬럼 결과를 그룹화하고 COUNT 를 통해 그룹별 레코드 개수를 파악해 '고객수' 컬럼을 결과로 생성, 마지막으로 ORDER BY 를 사용해 '고객수' 가 많은 연령대 부터 순차적으로 정렬하였다.