A. sql中只有出生年月怎麼按年齡段來統計
假如table中有older這個欄位存放出生年月的
select (datepart(year,getdate())-datepart(year,older))as '年齡' from table
即可實現該功能!
B. sql語句 根據年紀階段統計人數 根據性別分組
select性別,
casewhen年齡between20and29then1else0end[20-29],
casewhen年齡between30and39then1else0end[30-39],
casewhen年齡between40and49then1else0end[40-49]
from表名
groupby性別
以上使用於大部分資料庫
只是在起別名上,只適用於sqlserver
oracle的話起別名
select性別,
casewhen年齡between20and29then1else0end"20-29",
casewhen年齡between30and39then1else0end"30-39",
casewhen年齡between40and49then1else0end"40-49"
from表名
groupby性別
mysql的話
select性別,
casewhen年齡between20and29then1else0end`20-29,
casewhen年齡between30and39then1else0end`30-39`,
casewhen年齡between40and49then1else0end`40-49
from表名
groupby性別
C. 利用SQL語句統計出各年齡段人數
select '25-30歲' as 年齡段 count(*) as 人數 from tb where year(getdate())-year(birthday)>=25 and year(getdate())-year(birthday)<30
union all
select '30-35歲' as 年齡段 count(*) as 人數 from tb where year(getdate())-year(birthday)>=30 and year(getdate())-year(birthday)<35
union all
select '35-40歲' as 年齡段 count(*) as 人數 from tb where year(getdate())-year(birthday)>=35 and year(getdate())-year(birthday)<40
D. 如何寫一個sql語句能根據出生日期按年齡段統計人數
你需要使用兩種SQL語句:
COUNT( )
BETWEEN
然後你的資料表要有紀錄年齡,或是至少要有出生日期。
大概的語法如下:
SELECT COUNT( 欄位名 ) FROM 資料表 WHERE 年齡 BETWEEN '40' and '50'
欄位名:不能是可以允許NULL值的欄位,有NULL的資料不會計算在內。
資料表:你要抓資料的那個資料表。
BETWEEN '40' and '50':意思是介於40~50歲。
E. sql出生年月統計年齡段
SELECT
SUM(CASEWHENyears>=20ANDyears<30THEN1ELSE0END)AS'20-30歲',
SUM(CASEWHENyears>=30ANDyears<40THEN1ELSE0END)AS'30-40歲',
SUM(CASEWHENyears>=40ANDyears<50THEN1ELSE0END)AS'40-50歲'FROM
(SELECTDATEDIFF(YEAR,Birthday,GETDATE())ASyearsFROMdbo.c_driver)ABC
F. SQL語句按年齡分組,統計各個年齡的人數
先確保你的出生年月是datetime的日期類型,語法如下。
select case when datediff(year,出生年月,getdate()) <= 20 then '20歲年齡段'
when datediff(year,出生年月,getdate()) between 21 and 25 then '21-25年齡段'
else '25以上年齡段' end as 年齡段,count(1) as 年齡段人數
from 表
group by
case when datediff(year,出生年月,getdate()) <= 20 then '20歲年齡段'
when datediff(year,出生年月,getdate()) between 21 and 25 then '21-25年齡段'
else '25以上年齡段' end
也可以試試
select sum(case when datediff(year,出生年月,getdate()) <= 20 then 1 else 0 end) '20歲年齡段',
sum(case when datediff(year,出生年月,getdate()) between 21 and 25 then 1 else 0 end) '21-25年齡段',
sum(case when datediff(year,出生年月,getdate()) > 25 then 1 else 0 end) '25以上年齡段'
from 表
G. SQL統計年齡段
例如:
select case when [年齡] BETWEEN 10 AND 20 then '10-20'
when [年齡] BETWEEN 20 AND 30 then '20-30'
when [年齡] > 30 then '30以上' end as '年齡段',
count(*) as '人數' FROM [Table]
H. 用sql語句實現年齡分段統計
先將年齡除10取整
select floor(年齡/10) as age from 表
再根據年齡整數分組統計
select age ,count(age) from
(
select floor(年齡/10) as age from 表
)
group by age
這樣基本效果就出來了,達到樓主的要求就要加如函數計算了
sql語法
select convert(varchar,age*10)+'--'+convert(varchar,(age+1)*10) ,count(age) from
(
select floor(年齡/10) as age from 表
)
group by age
oracle語法
select age*10 || '--'|| (age+1)*10 ,count(age) from
(
select floor(年齡/10) as age from 表
)
group by age
I. sql語句 怎麼統計各年齡段人數分布情況 年齡為user_age,表為worker,年齡已知為數字類型
selectuser_age年齡,count(user_age)人數,cast(cast((count(user_age)/((selectcount(*)fromworker)*1.0)*100)asdecimal(9,2))asvarchar)+'%'所佔比例fromworkergroupbyuser_age
J. 用SQL語句查詢年齡分段的分組查詢 我的數據表格式如下
--不知道你要的是不是這樣的結果
CreatetableT
(
籍貫varchar(10),性別varchar(2),生日varchar(10)
)
insertintotvalues('四川','男','19890627')
insertintotvalues('新疆','男','19930711')
insertintotvalues('河南','男','19890623')
insertintotvalues('四川','女','19880512')
insertintotvalues('新疆','男','19950425')
insertintotvalues('河南','女','19800304')
Select籍貫,性別,
Sum(CaseWhen年齡<=20Then1Else0End)As[0-20歲(人)],
Sum(CaseWhen年齡Between21And40Then1Else0End)As[21-40歲(人)],
Sum(CaseWhen年齡Between41And60Then1Else0End)As[41-60歲(人)],
Sum(CaseWhen年齡>=61Then1Else0End)As[60歲以上(人)]
From
(
Select*,Year(GETDATE())-Year(convert(Datetime,生日))As年齡
Fromt
)s
GroupBy籍貫,性別
withrollup