使用SQL Server語句統計某年齡段人數占總人數的比例(多層查詢語句嵌套-比例分析)


需求:需統計出某個集合內,某個段所占的比例,涉及SELECT查詢語句的嵌套,如有疑問可留言。

如下:

--按性別進行年度掛號年齡段分析
--男
SELECT 年齡段,SUM(人數) 數量,cast(cast((SUM(人數)/((select count(*) from YXHIS2020..VTBMZGHMX2020 WHERE BTH=0 AND CXB='男')*1.0)*100) as decimal(9,2)) as varchar)+'%' 所占比例 FROM (
SELECT
CASE
WHEN 年齡 between 0 and 12 THEN '0-12 歲'
WHEN 年齡 between 13 and 24 THEN '13-24歲'
WHEN 年齡 between 25 and 36 THEN '25-36歲'
WHEN 年齡 between 37 and 48 THEN '37-48歲'
WHEN 年齡 between 49 and 60 THEN '49-60歲'
ELSE '60歲以上' END 年齡段, 人數,性別
FROM (
SELECT 年齡,人數,性別 FROM (
select DATEDIFF(year, DCSNY, DGH) 年齡,count(CNL) 人數,CXB 性別
from YXHIS2020..VTBMZGHMX2020 WHERE BTH=0 AND CXB='男' group by DATEDIFF(year, DCSNY, DGH),CXB )A GROUP BY A.年齡,A.人數,A.性別)A )B GROUP BY 年齡段

--女
SELECT 年齡段,SUM(人數) 數量,cast(cast((SUM(人數)/((select count(*) from YXHIS2020..VTBMZGHMX2020 WHERE BTH=0 AND CXB='女')*1.0)*100) as decimal(9,2)) as varchar)+'%' 所占比例 FROM (
SELECT
CASE
WHEN 年齡 between 0 and 12 THEN '0-12 歲'
WHEN 年齡 between 13 and 24 THEN '13-24歲'
WHEN 年齡 between 25 and 36 THEN '25-36歲'
WHEN 年齡 between 37 and 48 THEN '37-48歲'
WHEN 年齡 between 49 and 60 THEN '49-60歲'
WHEN 年齡>60 THEN '60歲以上'
ELSE '年齡錯誤' END 年齡段, 人數,性別
FROM (
SELECT 年齡,人數,性別 FROM (
select DATEDIFF(year, DCSNY, DGH) 年齡,count(CNL) 人數,CXB 性別
from YXHIS2020..VTBMZGHMX2020 WHERE BTH=0 AND CXB='女' group by DATEDIFF(year, DCSNY, DGH),CXB )A GROUP BY A.年齡,A.人數,A.性別)A )B GROUP BY 年齡段


免責聲明!

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



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