MySQL按年齡段查詢

2021-06-21 11:42:04 字數 3173 閱讀 7665

下面是專案中按照男女年齡段統計的核心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

) as

'女體檢總數'

,  sum

(case

when

s.***=1 

andtr.age >=18 

andtr.age <=29 

then

1 else

0 end

) as

'男18--29歲'

,  sum

(case

when

s.***=0 

andtr.age >=18 

andtr.age<=29 

then

1 else

0 end

) as

'女18--29歲'

,  sum

(case

when

s.***=1 

andtr.age <=45 

andtr.age>=30 

then

1 else

0 end

) as

'男30--39歲'

,  sum

(case

when

s.***=0 

andtr.age<=45  

andtr.age>=30  

then

1 else

0 end

) as

'女30--39歲'

,  sum

(case

when

s.***=1 

andtr.age <=50 

andtr.age>=46 

then

1 else

0 end

) as

'男40--49歲'

,  sum

(case

when

s.***=0 

andtr.age<=50 

andtr.age>=46 

then

1 else

0 end

) as

'女40--49歲'

,  sum

(case

when

s.***=1 

andtr.age <=60 

andtr.age>50 

then

1 else

0 end

) as

'男50--59歲'

,  sum

(case

when

s.***=0 

andtr.age<=60 

andtr.age>50 

then

1 else

0 end

) as

'女50--59歲'

,  sum

(case

when

s.***=1 

andtr.age <=70 

andtr.age>60 

then

1 else

0 end

) as

'男60--69歲'

,  sum

(case

when

s.***=0 

andtr.age<=70 

andtr.age>60 

then

1 else

0 end

) as

'女60--69歲'

,  sum

(case

when

s.***=1 

andtr.age <=80 

andtr.age>70 

then

1 else

0 end

) as

'男70--79歲'

,  sum

(case

when

s.***=0 

andtr.age<=80 

andtr.age>70 

then

1 else

0 end

) as

'女70--79歲'

,  sum

(case

when

s.***=1 

andtr.age >80 

then

1 else

0 end

) as

'男80歲以上'

,  sum

(case

when

s.***=0 

andtr.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 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...

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...