mysql一條sql查出多個條件不同的sum或count問題
一條sql查出多個條件不同的sum或count
最近做java后臺遇到很多問題記錄一下,有個需求是在一條sql中同時統(tǒng)計到幾條條件不一樣的sql或count,就用了子查詢,希望能幫助到需要的朋友,上代碼和效果圖:
select?
sum(pzgwjscd) as allJsgm,sbjh.nd as nd,?
( select sum(pzgwjscd) from fm_jh_ws_ptgw ptgw left join fm_sb_jh sbjh on ptgw.sbid = sbjh.id?
where substring(ptgw.xzqh,1,4) LIKE CONCAT ('3301') and ptgw.zt != 0 and sbjh.nd=2017 ) as hzJsgm,?
( select sum(pzgwjscd) from fm_jh_ws_ptgw ptgw left join fm_sb_jh sbjh on ptgw.sbid = sbjh.id?
where substring(ptgw.xzqh,1,4) LIKE CONCAT ('3303') and ptgw.zt != 0 and sbjh.nd=2017) as wzJsgm,?
( select sum(pzgwjscd) from fm_jh_ws_ptgw ptgw left join fm_sb_jh sbjh on ptgw.sbid = sbjh.id?
where substring(ptgw.xzqh,1,4) LIKE CONCAT ('3304') and ptgw.zt != 0 and sbjh.nd=2017 ) as jxJsgm,?
( select sum(pzgwjscd) from fm_jh_ws_ptgw ptgw left join fm_sb_jh sbjh on ptgw.sbid = sbjh.id?
where substring(ptgw.xzqh,1,4) LIKE CONCAT ('3305') and ptgw.zt != 0 and sbjh.nd=2017) as huzJsgm,?
( select sum(pzgwjscd) from fm_jh_ws_ptgw ptgw left join fm_sb_jh sbjh on ptgw.sbid = sbjh.id?
where substring(ptgw.xzqh,1,4) LIKE CONCAT ('3306') and ptgw.zt != 0 and sbjh.nd=2017 ) as sxJsgm,?
( select sum(pzgwjscd) from fm_jh_ws_ptgw ptgw left join fm_sb_jh sbjh on ptgw.sbid = sbjh.id?
where substring(ptgw.xzqh,1,4) LIKE CONCAT ('3307') and ptgw.zt != 0 and sbjh.nd=2017 ) as jhJsgm,?
( select sum(pzgwjscd) from fm_jh_ws_ptgw ptgw left join fm_sb_jh sbjh on ptgw.sbid = sbjh.id?
where substring(ptgw.xzqh,1,4) LIKE CONCAT ('3308') and ptgw.zt != 0 and sbjh.nd=2017 ) as qzJsgm,?
( select sum(pzgwjscd) from fm_jh_ws_ptgw ptgw left join fm_sb_jh sbjh on ptgw.sbid = sbjh.id?
where substring(ptgw.xzqh,1,4) LIKE CONCAT ('3309') and ptgw.zt != 0 and sbjh.nd=2017 ) as zsJsgm,?
( select sum(pzgwjscd) from fm_jh_ws_ptgw ptgw left join fm_sb_jh sbjh on ptgw.sbid = sbjh.id?
where substring(ptgw.xzqh,1,4) LIKE CONCAT ('3310') and ptgw.zt != 0 and sbjh.nd=2017 ) as tzJsgm,?
( select sum(pzgwjscd) from fm_jh_ws_ptgw ptgw left join fm_sb_jh sbjh on ptgw.sbid = sbjh.id?
where substring(ptgw.xzqh,1,4) LIKE CONCAT ('3311') and ptgw.zt != 0 and sbjh.nd=2017 ) as lsJsgm?
from fm_jh_ws_ptgw ptgw?
left join fm_sb_jh sbjh on ptgw.sbid = sbjh.id?
where 1=1 and ptgw.zt != 0 and sbjh.nd=2017?數(shù)據(jù)庫表

查詢結(jié)果:

Sql根據(jù)不同條件統(tǒng)計總數(shù)
經(jīng)常會遇到根據(jù)不同的條件統(tǒng)計總數(shù)的問題,一般有兩種寫法:count和sum都可以
數(shù)據(jù)準(zhǔn)備:

方法一 :Count
代碼:
SELECT COUNT( CASE WHEN age > 20 AND age < 25 THEN 1 ELSE NULL END ) AS cnt0, COUNT( CASE WHEN age >= 25 AND age < 30 THEN 1 ELSE NULL END ) AS cnt1 FROM USER;
結(jié)果:

方法二:sum
代碼:
SELECT SUM( CASE WHEN age > 20 AND age < 25 THEN 1 ELSE 0 END ) AS cnt0, SUM( CASE WHEN age >= 25 AND age < 30 THEN 1 ELSE 0 END ) AS cnt1 FROM USER;
結(jié)果:

當(dāng)然也可以和count代碼一樣ELSE后面也寫為NULL
SELECT SUM( CASE WHEN age > 20 AND age < 25 THEN 1 ELSE NULL END ) AS cnt0, SUM( CASE WHEN age >= 25 AND age < 30 THEN 1 ELSE NULL END ) AS cnt1 FROM USER;
后記
其實原理很簡單,count統(tǒng)計的時候有滿足條件的就加1,沒有滿足的變?yōu)镹ULL,我們知道聚合函數(shù)統(tǒng)計的時候是忽略null值的;而sum原理和coun相似,不過ELSE后面可以是0或者NULL。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- mysql count(*)分組之后IFNULL無效問題
- Sql根據(jù)不同條件統(tǒng)計總數(shù)的方法(count和sum)
- SQL中count(1)、count(*)?與?count(列名)的區(qū)別詳細解釋
- MySQL數(shù)據(jù)庫統(tǒng)計函數(shù)COUNT的使用及說明
- mysql?count()函數(shù)不計算null和空值問題
- mysql數(shù)據(jù)庫之count()函數(shù)和sum()函數(shù)用法及區(qū)別說明
- MySQL中的count(*)?和?count(1)?區(qū)別性能對比分析
- SQL 中 COUNT 的用法示例詳解
相關(guān)文章
mysql啟動報錯:The?server?quit?without?updating?PID?file的幾種
不管是在安裝還是運行MySQL的時候,都很有可能遇到報錯,下面這篇文章主要給大家介紹了關(guān)于mysql啟動報錯:The?server?quit?without?updating?PID?file的幾種解決辦法,需要的朋友可以參考下2022-08-08
MySQL索引查詢limit?offset及排序order?by用法
這篇文章主要介紹了MySQL限制數(shù)據(jù)返回條數(shù)limit?offset及排序order?by用法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05
percona-toolkit對MySQL的復(fù)制和監(jiān)控類操作教程
這篇文章主要介紹了使用percona-toolkit對MySQL進行復(fù)制和監(jiān)控類操作的教程,percona-toolkit是一款強大的MySQL輔助軟件,需要的朋友可以參考下2015-11-11
Linux手動部署遠程的mysql數(shù)據(jù)庫的方法詳解
這篇文章主要介紹了Linux手動部署遠程的mysql數(shù)據(jù)庫的方法詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
SQL查詢之字段是逗號分隔開的數(shù)組如何查詢匹配數(shù)據(jù)問題
這篇文章主要介紹了SQL查詢之字段是逗號分隔開的數(shù)組如何查詢匹配數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03

