sub 쿼리 || group by

하얀성·2023년 8월 2일
0

👌서브쿼리사용방법

  1. 데이터 대신 서브쿼리 넣기 가능.
  2. 한 데이터만을 서브쿼리가 대신할 수 있음. 여러 행을 대신하려하면 에러발생
  3. 서브 쿼리는 무조건 괄호 사용.
SELECT * FROM card 
WHERE 사용금액 > (SELECT avg(사용금액) FROM card)

단, IN() 안에서는 여러개의 행의 데이터들을 서브쿼리로 대체가능하다.
보통 JOIN으로 많이 사용한다.

SELECT *FROM card WHERE 고객명 IN (SELECT 이름 FROM blacklist)

카테고리 컬럼이란 데이터 몇개를 몇가지 종류로 구분가능한 컬럼

having : group by의 where문
group by 결과만 필터링 가능.
where문은 전체 행을 필터링 할때 사용.

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
SELECT 고객등급, max(사용금액) FROM  card WHERE 연체횟수 = 0
GROUP BY 고객등급 HAVING 고객등급 = 'vip' OR 고객등급 = '패밀리'

SELECT 고객등급, COUNT(고객명) FROM card
WHERE 연체횟수 = 0
GROUP BY 고객등급
HAVING 고객등급 = 'vip'
위 코드는 뭐하라는 소리일까요?

😊코드 읽을 땐 전체를 보려고 하면 안되고 위에서 부터 하나하나 읽어야합니다.

  1. SELECT FROM으로 모든 데이터 출력하는데

  2. 연체횟수 = 0인 행만 필터링하고

  3. 그 결과를 고객등급으로 그룹화하고

  4. 그 결과에서 고객등급 = 'vip'인 행만 필터링하라는 소리입니다.

<나의 해석>
고객등급이 같은 사람끼리 무리짓고 고객등급이 vip인 사람만을 고객명을 통해 갯수를 세서 나타내라.
그런데 연체회수가 0회여야함.

profile
기적을 한웅큼 품은 js러버

0개의 댓글