嘗試是這樣的(Here is a sqlfiddle):
select case
when time >= 23 then '23 =< TIME'
when time < 23 and time >= 22.3 then '23 > TIME >= 22,3'
when time < 22.3 and time >= 21.6 then '22,3 > TIME >= 21,6'
when time < 21.6 and time >= 20.9 then '21,6 > TIME >= 20,9'
else '20,9 > TIME'
end || ' with value '|| count(*) v
from your_table
group by case
when time >= 23 then '23 =< TIME'
when time < 23 and time >= 22.3 then '23 > TIME >= 22,3'
when time < 22.3 and time >= 21.6 then '22,3 > TIME >= 21,6'
when time < 21.6 and time >= 20.9 then '21,6 > TIME >= 20,9'
else '20,9 > TIME'
end
和結果:
21,6 > TIME >= 20,9 with value 8
20,9 > TIME with value 4
22,3 > TIME >= 21,6 with value 6
23 > TIME >= 22,3 with value 15
23 =< TIME with value 66
更新:作爲DavidAldrige建議你可以有一個子查詢:
select intrvl || ' with value '|| count(*) v
from
(select case
when time >= 23 then '23 =< TIME'
when time < 23 and time >= 22.3 then '23 > TIME >= 22,3'
when time < 22.3 and time >= 21.6 then '22,3 > TIME >= 21,6'
when time < 21.6 and time >= 20.9 then '21,6 > TIME >= 20,9'
else '20,9 > TIME'
end intrvl, time
from t)
group by intrvl
And here is another demo
+1:我想我可能會推案到對結果的子查詢和彙總,以避免重複的是複雜的表達式雖然。 –
A.B.Cade,感謝您的輸入!我會研究你的代碼,並在晚些時候獻上! – PaulHB
大衛奧爾德里奇,我怎麼可以在這個例子中使用子查詢?我只寫了我的問題的最小部分來簡化答案,但有時,我會有超過四個表達式顯示在條形圖(有時10)。謝謝! – PaulHB