最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql一條sql查出多個條件不同的sum或count問題

 更新時(shí)間:2023年05月29日 09:50:02   作者:碼農(nóng)王山  
這篇文章主要介紹了mysql一條sql查出多個條件不同的sum或count問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

一條sql查出多個條件不同的sum或count

最近做java后臺遇到很多問題記錄一下,有個需求是在一條sql中同時(shí)統(tǒng)計(jì)到幾條條件不一樣的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)計(jì)總數(shù)

經(jīng)常會遇到根據(jù)不同的條件統(tǒng)計(jì)總數(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;

后記

其實(shí)原理很簡單,count統(tǒng)計(jì)的時(shí)候有滿足條件的就加1,沒有滿足的變?yōu)镹ULL,我們知道聚合函數(shù)統(tǒng)計(jì)的時(shí)候是忽略null值的;而sum原理和coun相似,不過ELSE后面可以是0或者NULL。

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

临颍县| 钟祥市| 罗城| 青阳县| 太白县| 太仆寺旗| 博客| 漳州市| 兰考县| 和平县| 河西区| 临邑县| 象州县| 南岸区| 黑河市| 宁波市| 宜黄县| 大悟县| 夏河县| 西吉县| 吉隆县| 上高县| 牟定县| 汕头市| 中超| 普兰店市| 连城县| 景谷| 海原县| 通辽市| 白沙| 都昌县| 建湖县| 彭州市| 手游| 宁强县| 泰来县| 米泉市| 商河县| 安吉县| 灵山县|