inflearn logo
강의

Course

Instructor

Data Analysis SQL Fundamentals

Group By Rollup Practice

rollup시 null값 매출 라벨링

53

mewpotofficial

2 asked

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 해도 괜찮을것 같아요!

sql postgresql dbms/rdbms 데이터-엔지니어링

Answer 2

0

dooleyz3525

안녕하십니까,

좋은 정보 감사합니다.

0

communityai8509

안녕하세요, 인프런 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;

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

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

'레벨 유지'의 의미에 대한 질문

0

51

2

date_part

0

55

2

lag/lead offset 관련 질문

0

55

2

join 관련 질문 (inner join, left join)

1

98

2

배치에서 full outer join을 쓴다고 하셨는데 예시를 알 수 있을까요?

0

89

2

Madrid에 살고 있는 고객이 주문한 주문 정보를 구할것. 실습 질문드립니다

0

52

2

10. 조인 실습 - 02 관련 질문

0

59

1

조인실습03 - join의 pk-fk join

0

107

2

조인실습03 - join의 pk-fk join

0

68

2

(공유)맥, 스키마 import

0

81

2

sql 입문자인데, 이 강의와 sql 코딩테스트와 연관이 있을까요?

0

137

2

1인지 M인지는 결국엔 테이블을 직접 확인을 해야 하는걸까요?

0

130

2

안녕하세요. 튜닝핵심가이드강의 관련해서 여쭤보고 싶어서 남깁니다.

0

90

1

섹션5 Group by 실습-01 강의 예제 질문

0

117

2

섹션2 조인 기반 메커니즘에서 조인 실습 - 04 강의 예제 질문

0

123

2

섹션2 조인 실습 01 강의 질문

0

133

2

lead lag 이해 강의에서 윈도우 절은 사용되지 않습니다.

0

125

1

Dbeaver오류

0

628

2

직원 별 가장 높은 매출

0

118

1

강의순서대로 실습코드순알려주세요.

0

133

1

m:n inner join일 경우 cross조인과 동일하게 동작되는건가요?

0

129

1

rollup

0

90

2

Dbeaver에 접속해도 postgressql이 네비게이터에 안보입니다.

0

353

2

제발...오류가 계속 납니다

0

236

2