프로그래머스 SQL 고득점 kit 정리성장기록/기타2024. 9. 15. 15:28
목차
- AVG를 사용할 때는 GROUP BY를 반드시 사용.
- ROUND에서 소수 둘째자리면 ROUND(컬럼명, 1) 식으로 사용.
- 날짜 차이를 구할 때 DATEDIFF(끝날짜,처음날짜) +1 을 해야 됨. (당일날인 경우 0이 되기 때문)
- 날짜 포맷(프로그래머스는 MySQL이므로) DATE_FORMAT(날짜컬럼, '%Y-%m-%d')
- 달을 지정하는 날짜 포맷 방법 3가지
- SUBSTR(컬럼,1,7)로 자르기 -> 2022-10
- CREATED_DATE >= '2024-09-01' AND CREATED_DATE <= '2024-09-30'
- CREATED_DATE BETWEEN '2024-09-01' AND '2024-09-30'
- 중복 주문 회원 조회에 대한 조회방법(3가지)
COUNT 함수와 서브쿼리
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;
SELF JOIN
SELECT DISTINCT A.USER_ID, A.PRODUCT_ID
FROM ONLINE_SALE A
JOIN ONLINE_SALE B
ON A.USER_ID = B.USER_ID
AND A.PRODUCT_ID = B.PRODUCT_ID
AND A.SALES_DATE <> B.SALES_DATE
ORDER BY A.USER_ID ASC, A.PRODUCT_ID DESC;
서브쿼리
SELECT USER_ID, PRODUCT_ID
FROM (
SELECT USER_ID, PRODUCT_ID, COUNT(*) AS ORDER_COUNT
FROM ONLINE_SALE
GROUP BY USER_ID, PRODUCT_ID
) AS OrderCount
WHERE ORDER_COUNT > 1
ORDER BY USER_ID ASC, PRODUCT_ID DESC;
- 상위 N개 행을 조회하기 위해 LIMIT 사용 LIMIT 2,6 식으로 잘라서 사용도 가능(2번부터 6번까지)
- null값인 경우 값을 대체하는 함수 COALESCE(컬럼명, "NONE"(대체할 값))
- 온라인 판매/오프라인판매날짜, 상품명 등을 합친 결과는 UNION ALL을 사용. 단순 NULL은 NULL AS USER_ID 문제(링크)
- 최고값 구할때 서브쿼를 리용하려면 WHERE 절에서 "컬럼 = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)" 형태로 가능
'성장기록 > 기타' 카테고리의 다른 글
네이버 부스트캠프 웹·모바일 과정 8기 2차 코테 탈락 (2) | 2023.06.25 |
---|---|
네이버 부스트캠프 웹·모바일 과정 8기 1차 코테 합격 (0) | 2023.06.21 |
@BW_tree :: TREE BLOG
남에게 설명할 때 비로소 자신의 지식이 된다.
포스팅이 도움되셨다면 하트❤️ 또는 구독👍🏻 부탁드립니다!! 잘못된 정보가 있다면 댓글로 알려주세요.