서브쿼리, GROUP BY, HAVING

yellowbutter·2024년 5월 17일
0

MYSQL

목록 보기
8/10
post-thumbnail

1. 서브쿼리

  • 내부 쿼리 결과를 기반으로 데이터 필터링, 검색 또는 조작하는 데 자주 사용되는
    다른 쿼리 내에 포함된 쿼리.

  • 다른 쿼리 내부에 포함되어있는 SELECT 문을 의미한다.

  • 괄호 안에 포함되어있으면 일반적으로 더 큰 쿼리의 일부로 이용된다.

  • 테이블을 2개 이상 사용해서 결과를 뽑을 땐 대부분 서브쿼리말고 나중에 배울 JOIN 문법을 사용한다.

1. client 테이블에서 사용금액의 평균을 구해서 사용금액 > 평균인 행만 출력해주세요.

SELECT * FROM client WHERE 사용금액 >= (SELECT AVG(사용금액) FROM client)

2. 컬럼명 자리에 서브 쿼리 넣기

SELECT 고객명, 사용금액/(SELECT AVG(사용금액) FROM client) FROM client

3. IN() 자리에 서브 쿼리 넣기

SELECT 사용금액 FROM client WHERE 고객명 IN ('Pristine','George','Amy')
=> SELECT 사용금액 FROM client WHERE 고객명 IN (SELECT 이름 FROM blacklist)

4. GROUP BY

  • 카테고리마다 통계를 내보고 싶으면 GROUP BY 사용
  • 주로 카테고리 컬럼에 주로 사용함

    SELECT 고객등급, AVG(사용금액) FROM client GROUP BY 고객등급

5. HAVING

  • GROUP BY 한 결과도 HAVING으로 필터링 가능하다.
  • HAVING은 GROUP BY 결과를 필터링하고 싶을 때
  • WHERE는 테이블 전체 데이터 출력시 필터링하고 싶을 때
  • SELECT / FROM / WHERE / GROUP BY / HAVING / ORDER BY 순

SELECT 고객등급, AVG(사용금액) FROM client WHERE 연체횟수 = 0
GROUP BY 고객등급 HAVING 고객등급='vip'

6.IF CASE

IF(조건식, 조건식맞았을때실행, 조건식틀렸을때실행);

CASE
WHEN 조건식1 THEN 남길값1
WHEN 조건식2 THEN 남길값2
WHEN 조건식3 THEN 남길값3
ELSE 최종 남김값
END

profile
기록은 희미해지지 않는다 🐾🧑‍💻

0개의 댓글