下面是專案中按照男女年齡段統計的核心sql**:
count(tr.id)as '體檢總人數',
sum(case when s.***=1 then 1 else 0 end) as '男體檢總數',
sum(case when s.***=0 then 1 else 0 end) as '女體檢總數',
sum(case when s.***=1 and tr.age >=18 and tr.age <=29 then 1 else 0 end) as '男18--29歲',
sum(case when s.***=0 and tr.age >=18 and tr.age<=29 then 1 else 0 end) as '女18--29歲',
sum(case when s.***=1 and tr.age <=45 and tr.age>=30 then 1 else 0 end) as '男30--39歲',
sum(case when s.***=0 and tr.age<=45 and tr.age>=30 then 1 else 0 end) as '女30--39歲',
sum(case when s.***=1 and tr.age <=50 and tr.age>=46 then 1 else 0 end) as '男40--49歲',
sum(case when s.***=0 and tr.age<=50 and tr.age>=46 then 1 else 0 end) as '女40--49歲',
sum(case when s.***=1 and tr.age <=60 and tr.age>50 then 1 else 0 end) as '男50--59歲',
sum(case when s.***=0 and tr.age<=60 and tr.age>50 then 1 else 0 end) as '女50--59歲',
sum(case when s.***=1 and tr.age <=70 and tr.age>60 then 1 else 0 end) as '男60--69歲',
sum(case when s.***=0 and tr.age<=70 and tr.age>60 then 1 else 0 end) as '女60--69歲',
sum(case when s.***=1 and tr.age <=80 and tr.age>70 then 1 else 0 end) as '男70--79歲',
sum(case when s.***=0 and tr.age<=80 and tr.age>70 then 1 else 0 end) as '女70--79歲',
sum(case when s.***=1 and tr.age >80 then 1 else 0 end) as '男80歲以上',
sum(case when s.***=0 and tr.age>80 then 1 else 0 end) as '女80歲以上'
我拿其中一句解釋一下
sum(case when s.***=1 and tr.age >=18 and tr.age <=29 then 1 else 0 end) as '男18--29歲',
先看sum的括號裡面的部分
case when *** = 1 and age>=18 and age <=29 then 1 else 0 end
它表示的含義是:如果性別為1(也就是男),並且年齡在18-29歲之間成立為1,不成立為0.
case和end 是乙個關鍵字你可以理解為語句的開始和結束。
when相當於if做判斷,then就是判斷之後顯示的結果。如果成立顯示為1,不成立顯示為0
sum就是將各個值相加。形如:1+1+0+1+0+1+1+0+1+1
專案最後統計的結果截圖形如:
MySQL按年齡段查詢
下面是專案中按照男女年齡段統計的核心sql sql view plain copy print count tr.id as 體檢總人數 sum case when s.1 then 1 else 0 end as 男體檢總數 sum case when s.0 then 1 else 0 end ...
sql 年齡段統計
表employee empid,birthday 部分資料 empid birthday 1 1964 3 2 2 1980 5 9 3 1972 9 30 想得到按年齡段的人數,比如說20 30歲的員工數,30 40歲的員工數,40 50歲的員工數,50歲以上的員工數 即由員工表得到以下的統計資料...
147 統計各年齡段人數
函式fun的功能是 統計各年齡段的人數,n個年齡通過呼叫隨機函式獲取,並放在主函式的age陣列中,要求函式0 9歲的人數放在d 0 以此類推,把100歲 含100歲 以上的年齡人數都放在d 10 中,結構在主函式中輸出。define crt secure no warnings include de...