강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của mewpot
mewpot

câu hỏi đã được viết

Phân tích dữ liệu SQL Fundamentals

Nhóm theo thực hành tổng hợp

rollup시 null값 매출 라벨링

Viết

·

49

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

selectcoalesce(to_char(b.order_date, 'yyyy'), '총매출') asyear

, coalesce(to_char(b.order_date, 'mm'), '연매출') asmonth

, coalesce(to_char(b.order_date, 'dd'), '월매출') asday

, sum(a.amount) assum_amount

fromnw.order_itemsa

joinnw.ordersbona.order_id = b.order_id

groupbyrollup(to_char(b.order_date, 'yyyy'), to_char(b.order_date, 'mm'), to_char(b.order_date, 'dd'))

orderby1, 2, 3;

case when 안쓰고 coalesce 해도 괜찮을것 같아요!

sqlpostgresqldbms/rdbms데이터-엔지니어링

Câu trả lời 2

0

dooleyz3525님의 프로필 이미지
dooleyz3525
Người chia sẻ kiến thức

안녕하십니까,

좋은 정보 감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. mewpotofficial님.

SQL에서 ROLLUP을 사용할 때, NULL 값들을 원하는 형태로 라벨링할 때, CASE WHEN 대신 COALESCE를 사용하여 더 깔끔하게 쓸 수 있는 방법에 대해 질문하셨네요.

COALESCE 함수는 여러 인수를 받아 가장 첫 번째로 NULL 이 아닌 값을 반환합니다. 따라서, ROLLUP으로 인해 생성된 NULL 값들을 특정 문자열로 대체하여 라벨링 하고 싶을 때 적절히 사용할 수 있습니다. 예를 들어, 연도, 월, 일 값을 차례대로 COALESCE 함수로 감싸면, 각 차원에서 NULL 값이 나타날 때, 연도 합계, 월 합계 등의 레이블을 줄 수 있습니다.

아래는 유사한 답변 기록입니다. 이 답변에서도 CASE WHEN 대신 COALESCE 사용을 추천하고 있습니다:
- Group by rollup 실습 마지막 예제 쿼리 질문
이 게시물에서는 CASE WHEN 구문과 COALESCE 구문을 함께 사용하는 방법에 대해 설명하고 있습니다.

이를 통해 SQL 문이 다음과 같이 효과적으로 구성될 수 있습니다:

SELECT
  COALESCE(TO_CHAR(b.order_date, 'yyyy'), '총매출') AS year,
  COALESCE(TO_CHAR(b.order_date, 'mm'), '연매출') AS month,
  COALESCE(TO_CHAR(b.order_date, 'dd'), '월매출') AS day,
  SUM(a.amount) AS sum_amount
FROM
  nw.order_items a
JOIN
  nw.orders b ON a.order_id = b.order_id
GROUP BY
  ROLLUP(TO_CHAR(b.order_date, 'yyyy'), TO_CHAR(b.order_date, 'mm'), TO_CHAR(b.order_date, 'dd'))
ORDER BY
  1, 2, 3;

위와 같은 방식으로 연, 월, 일 차원에서 매출 합계를 명확하게 표시할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của mewpot
mewpot

câu hỏi đã được viết

Đặt câu hỏi