작성
·
51
0
https://torch-cart-08d.notion.site/3-139701964d8c805d9e49f3c68ab9b0b5
주차별 각 카테고리별 평균 할인율이 가장 높았던 기간과 할인율을 구하는 쿼리를 작성해주세요
단, 날짜 데이터를 YYYY-MM-DD 23:59:39 이런 형태로 변경해주세요
SELECT
*,
RANK() OVER(PARTITION BY category ORDER BY rate DESC) AS category_rank
FROM (
SELECT
category,
FORMAT_DATETIME('%Y-%m-%d 23:59:39', PARSE_DATETIME('%m/%d/%Y %H:%M:%S', transaction_date)) AS transaction_date,
actual_price,
list_price,
((list_price - actual_price) / list_price) * 100 AS rate
FROM transaction_data AS td
LEFT JOIN item_info ii
ON td.item_id = ii.item_id
)
QUALIFY category_rank = 1
ORDER BY category, transaction_date
2024년 1월에 가장 많은 매출을 기록한 카테고리를 구하는 쿼리를 작성해주세요
SELECT
category,
SUM(actual_price) AS total_price
FROM (
SELECT
category,
FORMAT_DATETIME('%Y-%m-%d 23:59:39', PARSE_DATETIME('%m/%d/%Y %H:%M:%S', transaction_date)) AS transaction_date,
actual_price,
FROM transaction_data AS td
LEFT JOIN item_info ii
ON td.item_id = ii.item_id
WHERE EXTRACT(MONTH FROM PARSE_DATETIME('%m/%d/%Y %H:%M:%S', transaction_date)) = 1
)
GROUP BY ALL
ORDER BY total_price DESC
LIMIT 1
유저별 총 구매 금액이 200만원 이상인 유저들이 가장 많이 구매한 카테고리를 찾는 쿼리를 작성해주세요
over_200 AS (
SELECT
td.user_id,
SUM(actual_price) AS user_price
FROM transaction_data AS td
LEFT JOIN user_info AS ui
ON td.user_id = ui.user_id
GROUP BY ALL
HAVING user_price >= 2000000
)
SELECT
category,
COUNT(*) AS cnt
FROM over_200 AS O2
CROSS JOIN transaction_data AS td
LEFT JOIN item_info AS ii
ON td.item_id = ii.item_id
GROUP BY ALL
ORDER BY cnt DESC
LIMIT 1
약 20분/5분/8분 소요
1번 문제에서 날짜 데이터를 변환하는 방법이 떠오르지 않아 시간이 많이 소요됐습니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 양승엽님의 질문에 대한 답변을 드리겠습니다.
우선, 1번 문제를 해결하는 과정에서 날짜 데이터를 YYYY-MM-DD 23:59:39
형태로 변환하는 방법은 FORMAT_DATETIME()
함수를 사용하면 됩니다. 이미 올바른 접근을 하고 계신 것으로 보입니다. 이 함수를 활용하여 데이터를 형식에 맞춰 변환할 수 있습니다. 쿼리 작성 시 FORMAT_DATETIME()
과 PARSE_DATETIME()
을 적절하게 사용하셨네요.
1번 문제에서의 주의점은, FORMAT_DATETIME()
함수 내에서 사용하고 있는 PARSE_DATETIME()
의 포맷이 입력 데이터의 실제 포맷과 일치해야 한다는 점입니다.
2번 문제에서는 2024년 1월에 가장 많은 매출을 기록한 카테고리를 구하는 과정에서 EXTRACT()
함수를 사용해 월을 추출하는 방법도 잘 사용하셨습니다.
3번 문제의 경우, 총 구매 금액을 기준으로 사용자 리스트를 필터링하고, 그 사용자들이 가장 많이 구매한 카테고리를 찾는 접근도 적절하게 잘 이루어졌습니다. CROSS JOIN
으로 각 유저의 거래 정보를 다시 결합하여 카테고리를 찾는 방법을 사용하고 계신 점에서 쿼리 작성이 잘 준비되었음을 알 수 있습니다.
관련하여 유용한 참고 사항으로, 리텐션 분석 및 다양한 지표 정의에 관한 답변을 찾아내어 공유드립니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.