250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- sql문풀
- 윈도우함수
- GROUPBY
- 데이터리안
- 위키독스
- 코딩테스트
- 프로그래머스문풀
- levle1
- 파이썬문풀
- 그로스해킹
- UNION
- mysql
- if문
- SQL
- 서브쿼리
- SQL테스트
- leetcode문풀
- leetcode
- 약수구하기
- join
- 프로그래머스
- 셀프조인
- 활성사용자수
- with절
- 데이터분석
- case문
- 파이썬
- SQL고득점KIT
- 코테
- 문풀
Archives
- Today
- Total
꿈은 데이터분석가, 취미는 계획
[MY SQL] 그룹별로 필터링 조건이 있는 경우 본문
728x90
출처: [프로그래머스 스쿨 - 코딩테스트 연습 - MY SQL 문제] : 대여 횟수가 많은 자동차들의 월별 대여 횟수 구하기
링크: https://school.programmers.co.kr/learn/courses/30/lessons/151139#qna
문제(일부): 특정기간동안 총 대여횟수가 5회 이상인 자동차들에 대해서(그룹 필터링1), 월별 자동차 ID별 총 대여횟수(그룹 필터링2)
1. 서브쿼리 활용하기
서브쿼리에 그룹 필터링1의 조건을 넣고메인쿼리에 그룹필터링 2의 조건을 넣음, where절에 그룹필터링 1과 일치하는 CAR_ID사용
SELECT MONTH(START_DATE) MONTH, CAR_ID, COUNT(*) RECORDS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE MONTH(START_DATE) BETWEEN 8 AND 10
AND CAR_ID IN (SELECT CAR_ID
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE MONTH(START_DATE) BETWEEN 8 AND 10
GROUP BY CAR_ID
HAVING COUNT(*) > 4)
GROUP BY CAR_ID, MONTH(START_DATE)
ORDER BY MONTH ASC, CAR_ID DESC;
WITH A AS(
SELECT CAR_ID, COUNT(CAR_ID)
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE MONTH(START_DATE) BETWEEN 8 AND 10
GROUP BY CAR_ID
HAVING COUNT(CAR_ID) >= 5)
2. WITH절 사용
WITH절에 그룹 필터링1의 조건을 넣고
메인쿼리에 그룹필터링 2의 조건을 넣음, where절에 그룹필터링 1과 일치하는 CAR_ID사용
WITH A AS(
SELECT CAR_ID, COUNT(CAR_ID)
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE MONTH(START_DATE) BETWEEN 8 AND 10
GROUP BY CAR_ID
HAVING COUNT(CAR_ID) >= 5)
SELECT MONTH(START_DATE) AS MONTH,CAR_ID, COUNT(CAR_ID) AS RECORS
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
WHERE MONTH(START_DATE) BETWEEN 8 AND 10
AND CAR_ID IN (SELECT A.CAR_ID FROM A)
GROUP BY CAR_ID, MONTH(START_DATE)
HAVING COUNT(CAR_ID) != 0
ORDER BY MONTH ASC, CAR_ID DESC
728x90
'SQL > sql문풀' 카테고리의 다른 글
[MY SQL] 상/하반기 점수의 합이 가장 높은 사원 찾기 (1) | 2024.04.18 |
---|---|
[MY SQL] WITH RECURSIVE 재귀쿼리 (0) | 2024.04.17 |
[MY SQL] 특정 그룹에서 가장 비싼 제품의 정보 가져오기 (0) | 2024.04.16 |
[MY SQL] 부모,자식관계를 업그레이드 아이템으로 이해하기 (0) | 2024.04.14 |
[MY SQL] 크기를 기준으로 비율별 그룹(등급) 만들기 (0) | 2024.04.10 |