首頁>Club>
現在有表A,A表中有一個欄位number,A表中儲存了一堆很多混亂的資料(number欄位),比如:1,3,4,5,6,8,9,10,11,12,15,88,100,101,102,123給他們按照連續分組求出分組範圍,比如上面的範圍就是:1-1,3-6,8-12,15-15,88-88,100-102,123-123。請問在MySQL中SQL怎麼寫,跪求!
11
回覆列表
  • 1 # Bean毛豆

    這個可以用到case...when...,case...when...有點類似我們在其它程式語言中的if...else..功能。透過case...when...的邏輯判斷,我們可以做到分組統計。

    case...when...資料的邏輯判斷

    語法上可以這麼理解:

    case 欄位名 when 值 then 符合邏輯時指定的值 else 不符合邏輯指定的值 end

    簡單來說就是當欄位名符合條件時,我們可以指定一個值,當不符合條件時我們可以指定另外一個值。

    題主描述的問題就可以這樣來解決:

    case when (number<2 then "1-1" when (number between 3 and 6) then "3-6" .... else end)

    這樣就可以解決題主所提到的問題。

    在這裡我舉一個例子,比如我們需要統計某個省份的使用者交易金額區間分佈,就可以結合group by進行相應的統計,達到目的。

    分步的方法-逐個區間進行統計

    我們也可以利用where條件進行統計,where條件的統計就需要我們利用union的方法將滿足條件的各個查詢結果合併在一起,得到最終的統計結果。比如

    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....去處理分割槽間的統計是一個不錯的選擇。

  • 中秋節和大豐收的關聯?
  • 怎麼讓狗狗確立主人地位?