GROUP BY, CASE WHEN

  1. 데이터베이스 개론 SQL 2 NHN NEXT 정호영 나눔고딕 및 나눔고딕코딩 글꼴을 설치해 주세요.
  2. 수업 준비 다음 테이블을 만들어 봅시다. https://raw.githubusercontent.com/honux77/introdb/master/sql2/etc.sql
  3. GROUP BY ~ HAVING 명령어 (1) GROUP BY에 명시된 컬럼을 기준으로 그룹을 형성하고 (2) 해당 그룹에 대해 그룹함수를 적용해서 결과를 보여줍니다. (3) HAVING 명령어로 그룹에 조건을 줄 수도 있습니다.
  4. GROUP BY 예제 1: 그룹 만들고 그룹 함수 써보기 1. 등급별 인원수를 구하시오.
  5. GROUP BY 예제 1: 그룹 만들고 그룹 함수 써보기 1. 등급별 인원수를 구하시오. SELECT grade, COUNT(*) AS num FROM auction_user GROUP BY grade;
  6. GROUP BY 예제 2: 다양한 그룹 함수 2. 등급별 인원수, 평균보유금액, 최대보유금액을 구하시오. • 자주 쓰는 그룹 함수 - COUNT, MAX, MIN, SUM, AVG 등이 있음
  7. GROUP BY 예제 2: 다양한 그룹 함수 2. 등급별 인원수, 평균보유금액, 최대보유금액을 구하시오. SELECT grade, COUNT(*) AS num, AVG(money) AS avg_money FROM auction_user GROUP BY grade;
  8. GROUP BY 예제 3: 조건 적용 3. 다이아와 브론즈 등급의 재산 총합을 각각 구하시오.
  9. GROUP BY 예제 3: 조건 적용 3. 다이아와 브론즈 등급의 재산 총합을 각각 구하시오. SELECT grade, SUM(money) AS sum_money FROM auction_user WHERE grade = 'B' or grade = 'D' GROUP BY grade;
  10. GROUP BY 예제 4: 그룹함수를 조건에 사용 4. 전체 인원수가 1650명 이상이 그룹을 구하시오. SELECT grade, count(*) AS num_user FROM auction_user WHERE count(*) > 1650 GROUP BY grade;
  11. 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
  12. 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
  13. 예제 5. 등급을 숫자로 바꾸고 숫자의 오름차순으로 정렬해서 표시해 주세요.
  14. 예제 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;
  15. THANK YOU!!!