[SQL]

그룹화 & 정렬

cr.kl_ 2024. 8. 12. 14:15
  • 그룹화 구문 : GROUP BY
    SELECT 열, 집계함수
    FROM 테이블
    [WHERE 필터 조건]
    GROUP BY 열
  • ex) 주소별 학생수
          select address, count (*)
          from students
          group by address

          주소별 학생 평균 나이
          select address, avg (age)
          from students
          group by address

 

  • GROUP BY 절에 의해 생성된 그룹 중 조건에 부합하는 그룹 선택하는 구문 : HAVING
    SELECT 열, 집계함수
    FROM 테이블
    [WHERE 필터 조건]
    GROUP BY 열
    HAVING 그룹 필터 조건
  • ex) 학생 수가 2명 이상인 주소만 조회
          SELECT address, COUNT(*)
          FROM students
          GROUP BY address
          HAVING COUNT(*) >= 2

 

  • 특정 기준에 따라 정렬 : ORDER BY
    SELECT 열, 집계함수
    FROM 테이블
    [WHERE 필터 조건]
    GROUP BY 열
    HAVING 그룹 필터 조건
    ORDER BY 열 [ASC(기본값, 오름차순) | DESC(내림차순)]
  • ex) 나이가 많은 학생부터 차례로 조회
          SELECT *
          FROM students
          ORDER BY age DESC
    나이가 많은 학생 top 3 조회
          SELECT *
          FROM students
          ORDER BY age DESC
          LIMIT 3

 

  • 모두 합치기
    SELECT address, COUNT(*)
    FROM students
    WHERE age >= 29
    GROUP BY address
    HAVING COUNT(*) >= 2
    ORDER BY COUNT(*) DESC;
  • WHERE - 나이 29 이상인 학생
    GROUP BY - 주소를 기준
    HAVING - 학생 수가 2명이상
    ORDER BY - 학생 수가 많은 순서(오름차순)으로 정리

'[SQL]' 카테고리의 다른 글

함수  (0) 2024.08.12
My SQL  (0) 2024.08.12
데이터베이스와 SQL?  (0) 2024.08.12