728x90
SELECT Region,
SUM(case when category = 'Furniture' then orders end) 'Furniture',
SUM(case when category = 'Office Supplies' then orders end) 'Office Supplies',
SUM(case when category = 'Technology' then orders end) 'Technology'
FROM RECORD
GROUP BY region;
Region에 따른 Category별 매출을 피벗테이블로 만들거예요.
Cateogry는 Furniture, Office Supplies, Technology 3가지가 있습니다.
- 피벗테이블의 행열에 들어갈 변수를 GROUP BY에 적어주세요 (Ex. region)
- SUM(case when category = 'Furniture' then 1 end) 'Furniture'
: category가 Funiture일때 1씩 더해라. 변수 이름은 Furniture로 해라
- SUM(case when category = 'Furniture' then orders end) 'Furniture'
: category가 Funiture일때 해당하는 orders 변수를 더해라. 변수 이름은 Furniture로 해라
solvesql
solvesql.com
CASE WHEN을 할 때 COUNT를 써주지 않으면 1로만 체크됩니다.
COUNT 꼭 써주기!
ORDER_ID 중복값 때문에 정답이 아님 ->
ORDER_ID 중복값 제거
SELECT region Region, category, COUNT(DISTINCT order_id) orders
FROM records
GROUP BY region, category
[최종 코드]
728x90
'𝙎𝙌𝙇' 카테고리의 다른 글
[MySQL] SolveSQL 문제풀이 : 날짜, 시간 추출 (0) | 2023.01.29 |
---|---|
[MySQL] 중복되는 값 찾기 : GROUP BY, HAVING >1 (0) | 2023.01.26 |
[MySQL/ORACLE] 그룹별 문자열 묶기 : GROUP_CONCAT / LISTAGG (1) | 2023.01.18 |
[MySQL] 문자열 길이 : LENGTH() / CHAR_LENGTH() 차이 (0) | 2023.01.17 |
[MySQL] GROUP BY 시 주의할 점 (0) | 2023.01.16 |