ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 코드카타
    [스파르타코딩클럽]데이터분석 과정/TIL,WIL 2024. 4. 4. 20:51

    SQL 코드카타

    오프라인 / 온라인 판매 데이터 통합하기
    ONLINE_SALE 테이블과 OFFLINE_SALE 테이블에서 2022년 3월의 오프라인/온라인 상품 판매 데이터의 판매 날짜, 상품ID, 유저ID, 판매량을 출력하는 SQL문을 작성해주세요. 
    OFFLINE_SALE 테이블의 판매 데이터의 USER_ID 값은 NULL 로 표시해주세요.
    결과는 판매일을 기준으로 오름차순 정렬해주시고 판매일이 같다면 상품 ID를 기준으로 오름차순,
    상품ID까지 같다면 유저 ID를 기준으로 오름차순 정렬해주세요.
    • 2022년 3월 : DATA_FORMAT
    • WHERE DATA_FORMAT
    • USER_ID 값은 NULL : SELECT NULL
    • 정렬 : ORDER BY
    SELECT DATE_FORMAT(SALES_DATE,'%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
    FROM ONLINE_SALE
    WHERE 1=1
    AND SALES_DATE LIKE '2022-03%'
    
    UNION ALL
    
    SELECT SALES_DATE, PRODUCT_ID, NULL, SALES_AMOUNT
    FROM OFFLINE_SALE
    WHERE 1=1
    AND SALES_DATE LIKE '2022-03%'
    ORDER BY 1,2,3;

     

    조건에 부합하는 중고거래 댓글 조회하기
    USED_GOODS_BOARD와 USED_GOODS_REPLY 테이블에서 2022년 10월에 작성된 게
    시글 제목, 게시글 ID, 댓글 ID, 댓글 작성자 ID, 댓글 내용, 댓글 작성일을 조회하는 SQL문을 작성해주세요.
    결과는 댓글 작성일을 기준으로 오름차순 정렬해주시고, 댓글 작성일이 같다면 게시글 제목을 기준으로 오름차순 정렬
    • 2022년 10월 : DATE_FORMAT
    • 2022년 10월 : WHERE 
    • 오름차순 정렬 : ORDER BY
    SELECT B.TITLE, B.BOARD_ID, R.REPLY_ID, R.WRITER_ID, R.CONTENTS,
           DATE_FORMAT(R.CREATED_DATE,'%Y-%m-%d') AS CREATED_DATE
    FROM USED_GOODS_BOARD B 
    JOIN USED_GOODS_REPLY R ON B.BOARD_ID = R.BOARD_ID
    WHERE DATE_FORMAT(B.CREATED_DATE, '%Y-%m') = '2022-10'
    ORDER BY R.CREATED_DATE, B.TITLE;

     

    입양 시각 구하기(2)
    보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지,
    각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬
    •  0시부터 23시 : WITH RECURSIVE CTE
    • 몇 시에 입양이 가장 활발하게 일어나는지 : JOIN
    • 각 시간대별로 입양이 몇 건 : COUNT , LEFT JOIN
    • 정렬 : ORDER BY
    WITH RECURSIVE CTE AS(
        SELECT 0 AS NUM
        UNION ALL
        SELECT NUM+1 FROM CTE
        WHERE NUM < 23
    )
    
    SELECT CTE.NUM AS HOUR, IFNULL(ANIMAL_OUTS.COUNT, 0) AS COUNT
    FROM CTE LEFT JOIN (
    SELECT HOUR(DATETIME) AS HOUR, COUNT(*) AS COUNT
    FROM ANIMAL_OUTS
    GROUP BY HOUR
    ) AS ANIMAL_OUTS ON CTE.NUM = ANIMAL_OUTS.HOUR
    ORDER BY HOUR;

     

    WITH RECURSIVE

    공통 테이블 표현식을 정의할 때 사용
    재귀적인 CTE 생성

    CTE
    임시적으로 정의된 테이블로, 복잡한 쿼리를 단순화하고 가독성을 향상시키는 데 사용
    계층 구조 데이터나 순환적인 데이터에 유용

    '[스파르타코딩클럽]데이터분석 과정 > TIL,WIL' 카테고리의 다른 글

    SQL 수준별학습  (0) 2024.04.08
    코드카타  (0) 2024.04.05
    코드카타  (0) 2024.04.03
    코드카타 / SQL  (0) 2024.04.02
    코드카타 / SQL  (0) 2024.04.01
Designed by Tistory.