현제의 현재이야기

SQL 서브쿼리 연습 본문

etc

SQL 서브쿼리 연습

현재의 현제 2023. 4. 25. 10:51
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

-- 코드를 입력하세요
SELECT MEMBER_NAME, REVIEW_TEXT, DATE_FORMAT(REVIEW_DATE, "%Y-%m-%d") AS REVIEW_DATE
FROM REST_REVIEW AS R
JOIN MEMBER_PROFILE AS P ON R.MEMBER_ID = P.MEMBER_ID
WHERE R.MEMBER_ID IN (
    SELECT MEMBER_ID
    FROM REST_REVIEW
    GROUP BY MEMBER_ID
    HAVING COUNT(*) = (
        SELECT MAX(CNT)
        FROM (
            SELECT COUNT(*) AS CNT
            FROM REST_REVIEW
            GROUP BY MEMBER_ID
        ) AS CNT_TABLE
    )
)
ORDER BY MEMBER_NAME, REVIEW_DATE, REVIEW_TEXT
  • 리뷰를 가장 많이 쓴 사람을 뽑는 것
  • 멤버를 그룹화하고, 그룹화 한 것 중의 개수가 맥스 카운트 인 것.
  • HAVING에서는 max를 사용할 수 없기 때문에.. 서브 쿼리를 또 써야한다. 
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

-- 코드를 입력하세요
SELECT H.FLAVOR
FROM (
    SELECT SHIPMENT_ID, FLAVOR, SUM(TOTAL_ORDER) AS TOTAL_ORDER
    FROM JULY
    GROUP BY FLAVOR
) AS J
JOIN FIRST_HALF AS H ON H.SHIPMENT_ID = J.SHIPMENT_ID
GROUP BY FLAVOR
ORDER BY H.TOTAL_ORDER + J.TOTAL_ORDER DESC
LIMIT 3
  • 7월과 상반기 판매 개수를 합친 것을 내림차순 하는 것
  • JULY를 가지고 그룹화를 하고, TOTAL ORDER를 모두 더하여 하나의 줄로 만듦
  • 그것과 조인을 하고 ORDER BY에 두 개를 더한 것으로 정렬한다.

'etc' 카테고리의 다른 글

[SQL] 터키어과 50주년 주문 정보 SQL문 짜기  (2) 2023.10.18
[GoLang] 잊지 말아야 할 것들  (0) 2023.08.21
SQL 정리  (0) 2023.04.23
AWS 1주차  (0) 2023.01.12
EC2 배포 정리  (0) 2023.01.08
Comments