MySQL SQL連續(xù)分組求分組范圍?
網(wǎng)友解答: 這個可以用到case...when...,case...when...有點類似我們在其它編程語言中的if...else..功能。通過case...when...的邏輯判斷,我
這個可以用到case...when...,case...when...有點類似我們在其它編程語言中的if...else..功能。通過case...when...的邏輯判斷,我們可以做到分組統(tǒng)計。
case...when...數(shù)據(jù)的邏輯判斷語法上可以這么理解:
case 字段名 when 值 then 符合邏輯時指定的值 else 不符合邏輯指定的值 end簡單來說就是當字段名符合條件時,我們可以指定一個值,當不符合條件時我們可以指定另外一個值。
題主描述的問題就可以這樣來解決:
case when (number<2 then '1-1' when (number between 3 and 6) then '3-6' .... else end)
這樣就可以解決題主所提到的問題。
在這里我舉一個例子,比如我們需要統(tǒng)計某個省份的用戶交易金額區(qū)間分布,就可以結(jié)合group by進行相應的統(tǒng)計,達到目的。
分步的方法-逐個區(qū)間進行統(tǒng)計我們也可以利用where條件進行統(tǒng)計,where條件的統(tǒng)計就需要我們利用union的方法將滿足條件的各個查詢結(jié)果合并在一起,得到最終的統(tǒng)計結(jié)果。比如
select count(number) number_count from numbers where number between 3 and 6
union
select count(number) number_count from numbers where number between 8 and 12
union
...
不過這樣的話比較麻煩而且比較費時,因此不推薦這么去做,通過case...when....去處理分區(qū)間的統(tǒng)計是一個不錯的選擇。
網(wǎng)友解答:可以 用case when 寫sql的時候多拼一列 例如 case when number 100 and number <102 then 1 when ...... 然后 group by 它 就可以實現(xiàn)了