Recent Posts
Stats & AI tech blog - '일단 시도함'
[SQL] 프로그래머스 MySQL - Lv.2 (11~20) 본문
https://school.programmers.co.kr/learn/challenges?order=recent&levels=2&languages=mysql
11. 재구매가 일어난 상품과 회원 리스트 구하기 (GROUP BY, HAVING)
SELECT USER_ID, PRODUCT_ID
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
HAVING COUNT(*) > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC
12. 업그레이드 된 아이템 구하기 (SUBQUERY)
SELECT ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO
WHERE ITEM_ID IN (SELECT DISTINCT B.ITEM_ID
FROM ITEM_INFO A
JOIN ITEM_TREE B
ON A.ITEM_ID = B.PARENT_ITEM_ID
WHERE A.RARITY = 'RARE')
ORDER BY ITEM_ID DESC
13. ROOT 아이템 구하기 (ISNULL)
SELECT A.ITEM_ID, A.ITEM_NAME
FROM ITEM_INFO A
JOIN ITEM_TREE B
ON A.ITEM_ID = B.ITEM_ID
WHERE ISNULL(B.PARENT_ITEM_ID)
ORDER BY A.ITEM_ID
14. 조건에 맞는 아이템들의 가격의 총합 구하기
SELECT SUM(PRICE) AS TOTAL_PRICE
FROM ITEM_INFO
WHERE RARITY = 'LEGEND'
15. 조건에 부합하는 중고거래 상태 조회하기 (CASE WHEN .. THEN .. END)
SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, (
CASE
WHEN STATUS = 'SALE' THEN '판매중'
WHEN STATUS = 'RESERVED' THEN '예약중'
WHEN STATUS = 'DONE' THEN '거래완료'
END) AS STATUS
FROM USED_GOODS_BOARD
WHERE CREATED_DATE = '2022-10-05'
ORDER BY BOARD_ID DESC
* CASE WHEN 조건 THEN 결과 ... END
16. 자동차 평균 대여 기간 구하기 (DATEDIFF +1)
SELECT CAR_ID, ROUND(AVG(DATEDIFF(END_DATE, START_DATE))+1,1) AS AVERAGE_DURATION
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
HAVING AVERAGE_DURATION >= 7
ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC
* 기간을 구할 때는 DATEDIFF(END, START) +1
17. 자동차 종류별 특정 옵션이 포함된 자동차 수 구하기 (LIKE)
SELECT CAR_TYPE, COUNT(CAR_ID) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%시트%' -- WHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE ASC
18. 조건에 맞는 도서와 저자 리스트 출력하기 (DATE_FORMAT)
SELECT BOOK_ID, AUTHOR_NAME, DATE_FORMAT(PUBLISHED_DATE,'%Y-%m-%d')
FROM BOOK B
LEFT JOIN AUTHOR A
ON B.AUTHOR_ID = A.AUTHOR_ID
WHERE CATEGORY = '경제'
ORDER BY PUBLISHED_DATE ASC
19. 성분으로 구분한 아이스크림 총 주문량
SELECT INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDER
FROM ICECREAM_INFO I
JOIN FIRST_HALF F
ON I.FLAVOR = F.FLAVOR
GROUP BY 1
ORDER BY 2
20. 진료과별 총 예약 횟수 출력하기 (LIKE)
SELECT MCDP_CD as 진료과코드, COUNT(*) as 5월예약건수
FROM APPOINTMENT
WHERE APNT_YMD LIKE '2022-05%'
GROUP BY MCDP_CD
ORDER BY 5월예약건수, 진료과코드
* 2022-05월으로 조건 => LIKE '2022-05%'
'Programming > SQL' 카테고리의 다른 글
[SQL] 프로그래머스 MySQL - Lv.4 (1~10) (2) | 2024.10.11 |
---|---|
[SQL] 프로그래머스 MySQL - Lv.3 (1~10) (0) | 2024.09.10 |
[SQL] 프로그래머스 MySQL - Lv.2 (1~10) (1) | 2024.09.05 |
[SQL] 프로그래머스 MySQL - Lv.1 (1~10) (0) | 2024.09.04 |
[SQL] LeetCode Hard Database Problem (1) | 2024.02.08 |