mysql sum(if())用法


原表:
id    fenlei     time
1      分類1      20130316
2      分類2      20130316
3      分類3      20130317
4      分類2      20130317
5      分類3      20130318

需要查上表,得到結果插入新表
新表結構:

id     fenlei_1   fenlei_2   fenlei_3   date
1      1             1          0         20130316
2      0             1          1         20130317
3      0             0          1         20130317

即要得到每個分類在每天各自消息數

select time,sum(if(fenlei='分類1',1,0 )),
sum(if(fenlei='分類2',1,0 )),sum(if(fenlei='分類3',1,0 ))
from tt
group by time

 

更多用法參考:http://blog.csdn.net/lifuxiangcaohui/article/details/6861570

先來一個簡單的sum

select sum(qty) as total_qty from inventory_product group by product_id

這樣就會統計出所有product的qty.

但是很不幸,我們的系統里面居然有qty為負值。而我只想統計那些正值的qty,加上if function就可以了。 SQL為:

select sum(if(qty > 0, qty, 0)) as total_qty   from inventory_product group by product_id

意思是如果qty > 0, 將qty的值累加到total_qty, 否則將0累加到total_qty.

再加強一點:

select
sum( if( qty > 0, qty, 0)) as total_qty   ,
sum( if( qty < 0, 1, 0 )) as negative_qty_count
from inventory_product 
group by product_id

這樣就可以統計有多少條負值的記錄了。方便程序用來告訴人們這條記錄數據異常


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM