在同乙個sql語句中,統計不同條件的Count數量

2022-07-04 12:33:07 字數 856 閱讀 1615

前幾天幫同事優化了個sql,原寫法使用多個子查詢這裡不再重現了,大家都遇到過這樣一種情況,在專案後期的維護中,

修改別人的sql**,超過30行的語句,多層子查詢,讀起來很坑,時間久的專案伴隨著人員的流通,你可能就不知道原作者寫這一堆的sql是幹什麼用的,

當然碰到部分有注釋習慣的朋友還是好點的,過長的sql後期維護性與可讀性很差,並且一般情況下效能也經不起推敲。

對於長的,複雜的sql可以有很多種處理方式

1、沉到業務中取處理,拆分sql

2、抽取公用統計屬性,建立冗餘表

上邊簡單列舉這兩種,不再展開,這裡關注上邊的問題處理

方案一

select id,

count(case when 屬性 in (1,2) then 1 else 0 end) as sum1,

count(case when  屬性 in (3) then 1 else 0 end) as sum2,

sum(case when  屬性 in (4,5) then 1 else 0 end) as sum3

from 表名

group by id

方案二

select   

count( * ) as num,  

count(if(字段=1,true,null)) as sum1,   

count(if欄位=2,true,null)) as sum2   

from 表名 

where  其他條件

還有其他實現方式,這裡不再展開,有興趣的朋友一起討論呀( ⊙ o ⊙ )!

在同乙個sql語句中寫不同條件的Count數量

其實有count很難實現 可以用sum 去實現它 例子如下 select xy,sum case when jw cljgh 1 then 1 else 0 end as 留級,sum case when jw cljgh 2 then 1 else 0 end as 復學 from xjgl,bj...

同乙個TextView,不同顏色,不同字型大小設定

開發中經常會遇到同乙個textview需要顯示不同顏色,不同字型大小的文字。通過spannablestringbuilder 可以很容易的實現這兩個功能。以下是乙個自定義的spannableutils public class spannableutils spannablestringbuilde...

python 同乙個float值,id不同

10000 is 10000 true a 10000 b 10000 a is b false a 1 b 1 a is b true 解釋上面這個例子 第乙個,兩個10000 pyintobject都會在編譯的時候就生成,而且因為他們被編譯為了乙個pycodeobject所以兩個10000是一樣...