[그룹별 조건에 맞는 식당 목록 출력하기]
MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요. 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요.
-- 리뷰를 가장 많이 작성한 회원이 1명인 경우
SELECT M.MEMBER_NAME,
R.REVIEW_TEXT,
DATE_FORMAT(R.REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE
FROM MEMBER_PROFILE M
JOIN REST_REVIEW R ON M.MEMBER_ID = R.MEMBER_ID
WHERE M.MEMBER_ID = (SELECT MEMBER_ID
FROM REST_REVIEW
GROUP BY MEMBER_ID
ORDER BY COUNT(REVIEW_ID) DESC
LIMIT 1)
ORDER BY 3, 2;
-- 리뷰를 가장 많이 작성한 회원이 여러명인 경우
WITH ReviewCounts AS ( -- ReviewCounts 테이블 생성
SELECT MEMBER_ID,
COUNT(*) AS review_count
FROM REST_REVIEW
GROUP BY MEMBER_ID
),
TopReviewers AS ( -- TopReviewers 테이블 생성
SELECT MEMBER_ID
FROM ReviewCounts
WHERE review_count = (SELECT MAX(review_count)
FROM ReviewCounts)
)
SELECT M.MEMBER_NAME,
R.REVIEW_TEXT,
DATE_FORMAT(R.REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATE
FROM REST_REVIEW R
JOIN TopReviewers T ON R.MEMBER_ID = T.MEMBER_ID
JOIN MEMBER_PROFILE M ON R.MEMBER_ID = M.MEMBER_ID
ORDER BY 3, 2;
[온라인 / 오프라인 판매 데이터 통합하기]
ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요. OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요. 결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순, 상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.
-- UNION ALL, NULL값 처리하기
SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') SALES_DATE,
PRODUCT_ID,
USER_ID,
SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE LIKE '2022-03%'
UNION ALL
SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') SALES_DATE,
PRODUCT_ID,
NULL,
SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE LIKE '2022-03%'
ORDER BY 1, 2, 3;
[조건에 부합하는 중고거래 댓글 조회하기]
-- USED_GOODS_BOARD 테이블과 USED_GOODS_REPLY 테이블은 같은 컬럼명이 다수 존재
-- 하지만, 실제로 의미하는 바가 다르기 때문에 어떤 테이블에서 컬럼을 가져올지 잘 구분해야함
SELECT B.TITLE,
B.BOARD_ID,
R.REPLY_ID,
R.WRITER_ID,
R.CONTENTS,
DATE_FORMAT(R.CREATED_DATE, '%Y-%m-%d') CREATED_DATE
FROM USED_GOODS_BOARD B
JOIN USED_GOODS_REPLY R ON B.BOARD_ID = R.BOARD_ID
WHERE B.CREATED_DATE LIKE '2022-10%'
ORDER BY 6, 1;
'SQL' 카테고리의 다른 글
SQL 코드카타 오답: WITH RECURSIVE() (2) | 2024.12.20 |
---|---|
QCC 2회차: DISTINCT | <> | CASE WHEN | DATE() (0) | 2024.12.20 |
SQL 코드카타 오답: WHERE에서 두 가지 조건 부여하기 | SUM (2) | 2024.12.17 |
QCC 1회차: WINDOW 함수 | RANK | 상관 서브쿼리 | 2번 JOIN하기 | 우선순위 부여 (1) | 2024.12.13 |
SQL 코드카타 오답: CONCAT | FROM절 안에서 JOIN하기 (1) | 2024.12.11 |