MySQL按年龄段查询
生活随笔
收集整理的這篇文章主要介紹了
MySQL按年龄段查询
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
? 下面是項(xiàng)目中按照男女年齡段統(tǒng)計(jì)的核心sql代碼:
COUNT(tr.id)AS '體檢總?cè)藬?shù)',SUM(CASE WHEN s.sex=1 THEN 1 ELSE 0 END) AS '男體檢總數(shù)',SUM(CASE WHEN s.sex=0 THEN 1 ELSE 0 END) AS '女體檢總數(shù)',SUM(CASE WHEN s.sex=1 AND tr.age >=18 AND tr.age <=29 THEN 1 ELSE 0 END) AS '男18--29歲',SUM(CASE WHEN s.sex=0 AND tr.age >=18 AND tr.age<=29 THEN 1 ELSE 0 END) AS '女18--29歲',SUM(CASE WHEN s.sex=1 AND tr.age <=45 AND tr.age>=30 THEN 1 ELSE 0 END) AS '男30--39歲',SUM(CASE WHEN s.sex=0 AND tr.age<=45 AND tr.age>=30 THEN 1 ELSE 0 END) AS '女30--39歲',SUM(CASE WHEN s.sex=1 AND tr.age <=50 AND tr.age>=46 THEN 1 ELSE 0 END) AS '男40--49歲',SUM(CASE WHEN s.sex=0 AND tr.age<=50 AND tr.age>=46 THEN 1 ELSE 0 END) AS '女40--49歲',SUM(CASE WHEN s.sex=1 AND tr.age <=60 AND tr.age>50 THEN 1 ELSE 0 END) AS '男50--59歲',SUM(CASE WHEN s.sex=0 AND tr.age<=60 AND tr.age>50 THEN 1 ELSE 0 END) AS '女50--59歲',SUM(CASE WHEN s.sex=1 AND tr.age <=70 AND tr.age>60 THEN 1 ELSE 0 END) AS '男60--69歲',SUM(CASE WHEN s.sex=0 AND tr.age<=70 AND tr.age>60 THEN 1 ELSE 0 END) AS '女60--69歲',SUM(CASE WHEN s.sex=1 AND tr.age <=80 AND tr.age>70 THEN 1 ELSE 0 END) AS '男70--79歲',SUM(CASE WHEN s.sex=0 AND tr.age<=80 AND tr.age>70 THEN 1 ELSE 0 END) AS '女70--79歲',SUM(CASE WHEN s.sex=1 AND tr.age >80 THEN 1 ELSE 0 END) AS '男80歲以上',SUM(CASE WHEN s.sex=0 AND tr.age>80 THEN 1 ELSE 0 END) AS '女80歲以上'我拿其中一句解釋一下
?SUM(CASE WHEN s.sex=1 AND tr.age >=18 AND tr.age <=29 THEN 1 ELSE 0 END) AS '男18--29歲',
先看sum的括號里面的部分
?case when sex = 1 and age>=18 and age <=29 then 1 else 0 end
它表示的含義是:如果性別為1(也就是男),并且年齡在18-29歲之間成立為1,不成立為0.
case和end 是一個關(guān)鍵字你可以理解為語句的開始和結(jié)束。
when相當(dāng)于if做判斷,then就是判斷之后顯示的結(jié)果。如果成立顯示為1,不成立顯示為0
sum就是將各個值相加。形如:1+1+0+1+0+1+1+0+1+1
項(xiàng)目最后統(tǒng)計(jì)的結(jié)果截圖形如:
總結(jié)
以上是生活随笔為你收集整理的MySQL按年龄段查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iomega ix2 Android,L
- 下一篇: 文化财经SAR指标计算(一)