[SQL] 03-2 좀 더 깊게 알아보는 SELECT 문

김민서·2024년 7월 12일

혼자 공부하는 SQL

목록 보기
6/19

기본 개념

  1. ORDER BY: 결과를 정렬하기 위해 사용함.
  2. LIMIT: 결과의 개수를 제한함.
  3. DISTINCT: 중복된 데이터를 제거함.
  4. GROUP BY: 지정한 열의 데이터들 중 같은 데이터들끼리는 묶어서 결과를 추출함.
    1) HAVING: WHERE과 비슷하게 조건식을 추가하는 절이지만, GROUP BY 절과 함께 사용되는 것이 차이임.

기본

SELECT 절의 기본 형식

  1. SELECT 열_이름
  2. FROM 테이블_이름
  3. WHERE 조건식
  4. GROUP BY 열_이름
  5. HAVING 조건식
  6. ORDER BY 열_이름
  7. LIMIT 숫자

ORDER BY 절

  1. 데뷔 일자(debut_date)가 빠른 순서대로 출력하기

  2. 데뷔 일자가 늦은 순서대로 정렬하기
    1) 제일 뒤에 DESC(내림차순)라고 붙이면 됨. <-> ASC(오름차순)

  3. WHERE 절과 함께 사용하기
    1) 평균 키가 164 이상인 회원들을 키가 큰 순서대로 조회하기
    2) 순서 중요!! -> WHERE 절 -> ORDER BY 절

    3) 추가로 평균 키가 동일한 회원들이 있을 경우, 데뷔 일자가 빠른 회원이 먼저 출력되도록 하기

LIMIT 절: 출력의 개수를 제한

  1. LIMIT 형식: LIMIT 시작, 개수

  2. 전체 중 앞에서 3건만 조회하기
    1) LIMIT 3은 LIMIT 0,3과 동일함.

  3. 데뷔 일자가 빠른 회원 3건만 추출하기

  4. 평균 키가 큰 순으로 정렬하되, 3번째부터 2건만 조회하기

DISTINCT: 중복된 결과를 제거하기

  1. 회원들의 지역(addr) 출력하기

  2. ORDER BY 사용하기

  3. DISTINCT 사용하기
    1) 중복된 데이터를 1개만 남기고 제거함.

GROUP BY 절

  1. 회원 별로 구매한 물품의 개수 확인하기

  2. GROUP BY와 함께 사용되는 집계 함수 사용하기
    1) SUM(): 합계 구하기
    2) AVG(): 평균 구하기
    3) MIN(): 최소값 구하기
    4) MAX(): 최대값 구하기
    5) COUNT(): 행의 개수 세기
    6) COUNT(DISTINCT): 행의 개수 세기(중복은 1개만 인정)

  3. 각 회원별로 구매한 개수를 합쳐서 출력하기 위해 SUM() 사용

  4. 별칭을 사용하여 결과를 보기 좋게 만들기

  5. 회원이 구매한 금액의 총합 출력하기
    1) 구매 금액 = 가격(price) * 수량(amount)

  6. 전체 회원이 구매한 물품 개수의 평균 구하기

  7. 각 회원이 한 번 구매 시 평균 몇 개를 구매했는지 알아보기

  8. 회원 테이블에서 연락처가 있는 회원 수
    1) 연락처가 있는 회원만 카운트하기 위해서는 phone1 또는 phone2의 열 이름을 지정해야 함.
    2) NULL 값인 항목을 제외하고 카운트하여야 함.
    3) 잘못된 경우 -> COUNT(*)은 모든 행의 개수를 셈.

    4) 올바른 경우

HAVING 절

  1. SUM()으로 회원별 총 구매금액 구하기

  2. 결과 중에서 총 구매액이 1000 이상인 회원만 조회하기
    1) GROUP BY에서는 WHERE 사용 불가. 대신 HAVING 사용

  3. 총 구매액이 큰 사용자부터 나타내기

0개의 댓글