mysql leetcode 1435. 製作會話柱狀圖 解題思路 一步一步來
阿新 • • 發佈:2020-08-07
看完題目後,我一般先看結果的樣子
從結果可以看出,是按照成績自定義分組
自定義分組用到 group by case when
所以先得出
select case when duration/60<5 then '[0-5>' when duration/60<10 then '[5-10>' when duration/60<15 then '[10-15>' else '15 or more' end as bin, count(1) as total from `Sessions` group by bin
得出的結果跟答案不一樣
因為對於不在判斷條件內的值是不會產生記錄的
比如答案中的 [10-15> | 0
分類是固定的,按照題目所給的定義
我們可以先生成左邊 bin 的一列
通過 自定義值+union連線
select '[0-5>' as bin union select '[5-10>' as bin union select '[10-15>' as bin union select '15 or more' as bin
得出這一部分後,將兩部分拼接起來,使用左連線
使用ifnull判斷為空的 total項,並將其設為0
select s1.bin as bin, ifnull(s2.total, 0) as total from ( select'[0-5>' as bin union select '[5-10>' as bin union select '[10-15>' as bin union select '15 or more' as bin ) as s1 left join ( select case when duration/60<5 then '[0-5>' when duration/60<10 then '[5-10>' when duration/60<15 then '[10-15>' else'15 or more' end as bin, count(1) as total from `Sessions` group by bin ) as s2 on s1.bin = s2.bin