[LeetCode MySQL] 1179. Reformat Department Table
2021. 1. 11. 23:00ㆍToday I Learned.../MySQL
1179. Reformat Department Table
Table: Department
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| id | int |
| revenue | int |
| month | varchar |
+---------------+---------+
(id, month) is the primary key of this table.
The table has information about the revenue of each department per month.
The month has values in ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"].
Write an SQL query to reformat the table such that there is a department id column and a revenue column for each month.
The query result format is in the following example:
Department table:
+------+---------+-------+
| id | revenue | month |
+------+---------+-------+
| 1 | 8000 | Jan |
| 2 | 9000 | Jan |
| 3 | 10000 | Feb |
| 1 | 7000 | Feb |
| 1 | 6000 | Mar |
+------+---------+-------+
Result table:
+------+-------------+-------------+-------------+-----+-------------+
| id | Jan_Revenue | Feb_Revenue | Mar_Revenue | ... | Dec_Revenue |
+------+-------------+-------------+-------------+-----+-------------+
| 1 | 8000 | 7000 | 6000 | ... | null |
| 2 | 9000 | null | null | ... | null |
| 3 | null | 10000 | null | ... | null |
+------+-------------+-------------+-------------+-----+-------------+
Note that the result table has 13 columns (1 for the department id + 12 for the months).
QUERY 1
select id,
case when month = 'Jan' then sum(revenue) else null end as Jan_Revenue,
case when month = 'Feb' then sum(revenue) else null end as Feb_Revenue,
case when month = 'Mar' then sum(revenue) else null end as Mar_Revenue,
case when month = 'Apr' then sum(revenue) else null end as Apr_Revenue,
case when month = 'May' then sum(revenue) else null end as May_Revenue,
case when month = 'Jun' then sum(revenue) else null end as Jun_Revenue,
case when month = 'Jul' then sum(revenue) else null end as Jul_Revenue,
case when month = 'Aug' then sum(revenue) else null end as Aug_Revenue,
case when month = 'Sep' then sum(revenue) else null end as Sep_Revenue,
case when month = 'Oct' then sum(revenue) else null end as Oct_Revenue,
case when month = 'Nov' then sum(revenue) else null end as Nov_Revenue,
case when month = 'Dec' then sum(revenue) else null end as Dec_Revenue
from department
group by id, month
QUERY 2
select id,
sum(if(month='Jan', revenue, null)) as Jan_Revenue,
sum(if(month='Feb', revenue, null)) as Feb_Revenue,
sum(if(month='Mar', revenue, null)) as Mar_Revenue,
sum(if(month='Apr', revenue, null)) as Apr_Revenue,
sum(if(month='May', revenue, null)) as May_Revenue,
sum(if(month='Jun', revenue, null)) as Jun_Revenue,
sum(if(month='Jul', revenue, null)) as Jul_Revenue,
sum(if(month='Aug', revenue, null)) as Aug_Revenue,
sum(if(month='Sep', revenue, null)) as Sep_Revenue,
sum(if(month='Oct', revenue, null)) as Oct_Revenue,
sum(if(month='Nov', revenue, null)) as Nov_Revenue,
sum(if(month='Dec', revenue, null)) as Dec_Revenue
from department
group by id
Reference: LeetCode 1179. Reformat Department Table
'Today I Learned... > MySQL' 카테고리의 다른 글
[LeetCode MySQL] 197. Rising Temperature (0) | 2021.01.11 |
---|---|
[LeetCode MySQL] 183. Customers Who Never Order (0) | 2021.01.11 |
[HackerRank MySQL] Type of Triangle (0) | 2021.01.11 |
[HackerRank MySQL] Draw The Triangle 1 & 2 - information_schema.tables (0) | 2021.01.05 |
[HackerRank MySQL] INNER JOIN 문제풀기 (Basic) (0) | 2021.01.05 |