GROUP BY 예제 1: 그룹 만들고 그룹 함수 써보기
1. 등급별 인원수를 구하시오.
SELECT grade, COUNT(*) AS num
FROM auction_user
GROUP BY grade;
GROUP BY 예제 2: 다양한 그룹 함수
2. 등급별 인원수, 평균보유금액, 최대보유금액을 구하시오.
• 자주 쓰는 그룹 함수
- COUNT, MAX, MIN, SUM, AVG 등이 있음
GROUP BY 예제 2: 다양한 그룹 함수
2. 등급별 인원수, 평균보유금액, 최대보유금액을 구하시오.
SELECT grade, COUNT(*) AS num, AVG(money) AS avg_money
FROM auction_user
GROUP BY grade;
GROUP BY 예제 3: 조건 적용
3. 다이아와 브론즈 등급의 재산 총합을 각각 구하시오.
GROUP BY 예제 3: 조건 적용
3. 다이아와 브론즈 등급의 재산 총합을 각각 구하시오.
SELECT grade, SUM(money) AS sum_money
FROM auction_user
WHERE grade = 'B' or grade = 'D'
GROUP BY grade;
GROUP BY 예제 4: 그룹함수를 조건에 사용
4. 전체 인원수가 1650명 이상이 그룹을 구하시오.
SELECT grade, count(*) AS num_user
FROM auction_user
WHERE count(*) > 1650
GROUP BY grade;
GROUP BY 예제 4: 그룹함수를 조건에 사용
4. 전체 인원수가 1650명 이상이 그룹을 구하시오.
*group by의 조건은 having으로 기술하는 게 정석
* 집합함수는 having으로만 가능합니다
SELECT grade, count(*) AS num_user
FROM auction_user
WHERE count(*) > 1650
GROUP BY grade;
SELECT grade, count(*) AS num_user
FROM auction_user
GROUP BY grade
HAVING count(*) > 1650
CASE WHEN
1. 일반 프로그래밍 언어의 switch - case와 유사합니다.
2. CASE ~ WHEN … 자체가 하나의 값처럼 동작합니다.
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list] ...
[ELSE statement_list]
END CASE
예제 5. 등급을 숫자로 바꾸고
숫자의 오름차순으로 정렬해서 표시해 주세요.
SELECT name, grade,
CASE grade
WHEN 'D' THEN '1'
WHEN 'P' THEN '2'
WHEN 'G' THEN '3'
ELSE '4'
END AS new_grade
FROM auction_user
ORDER BY new_grade;