当前位置:首页 » 编程语言 » sql按年龄分段怎么写
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql按年龄分段怎么写

发布时间: 2023-03-10 10:02:38

Ⅰ 关于oracle数据库 sql的写法 我想写一个 关于年龄分组的sql 按1-30岁,31-50岁,50以上. 想分成这3个年龄段

SELECT COUNT(CASE WHEN AGE BETWEEN 1 AND 30 THEN 1 ELSE 0 END) AS 1-30岁
,COUNT(CASE WHEN AGE BETWEEN 31 AND 50 THEN 1 ELSE 0 END) AS 31-50岁
,COUNT(CASE WHEN AGE > 50 THEN 1 ELSE 0 END) AS 50以上
FROM TABLE_NAME;
这个语句就可以做到~

Ⅱ sql语句如何按年龄段和性别分组查询,麻烦给个具体例子,年龄字段是age,性别字段是sex

1、建表:

CREATETABLE[dbo].[Users](
[Name][nvarchar](50)NULL,
[Age][int]NULL,
[Sex][nchar](10)NULL
)ON[PRIMARY]
GO

2、插入数据:

Ⅲ 用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

Ⅳ 关于年龄段查询的sql语句:怎么写出来呀 年龄段 人数 百分比 男 女 合计 男 女 0-10 11-20 。 。

给一个示例,自己修改

SELECT '年龄段'=(case
WHEN (datediff(year,EBIRTHDAY,getdate())-1)<=25 THEN '25岁及以下'
WHEN (datediff(year,EBIRTHDAY,getdate())-1)<=33 THEN '26岁-33岁'
WHEN (datediff(year,EBIRTHDAY,getdate())-1)<=41 THEN '34岁-41岁'
else '41岁以上'
END),
COUNT(FID) AS 人数,
CAST(
LEFT(
ROUND(100.00 * COUNT(FID) / (SELECT COUNT(FID) AS total
FROM tperson
WHERE FEmployState='正式'),
2),
5)
AS VARCHAR) + '%' AS 百分比

FROM TPERSON
WHERE FEmployState IN ('正式')
GROUP BY
(case
WHEN (datediff(year,EBIRTHDAY,getdate())-1)<=25 THEN '25岁及以下'
WHEN (datediff(year,EBIRTHDAY,getdate())-1)<=33 THEN '26岁-33岁'
WHEN (datediff(year,EBIRTHDAY,getdate())-1)<=41 THEN '34岁-41岁'
else '41岁以上'
END)

Ⅳ 如何写一个sql语句能根据出生日期按年龄段统计人数

你需要使用两种SQL语句:

  • COUNT( )

  • BETWEEN

然后你的资料表要有纪录年龄,或是至少要有出生日期。

大概的语法如下:

SELECT COUNT( 栏位名 ) FROM 资料表 WHERE 年龄 BETWEEN '40' and '50'

栏位名:不能是可以允许NULL值的栏位,有NULL的资料不会计算在内。

资料表:你要抓资料的那个资料表。

BETWEEN '40' and '50':意思是介于40~50岁。

Ⅵ 用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

Ⅶ 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 表

Ⅷ 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]

Ⅸ xml文件里如何写sql语句实现年龄分组

xml 文件中 小于号 < 要用 &lt; 代替吧。

selectt1.p1asnum1,t2.p2asnum2,t3.p3asnum3,t4.p4asnum4,t5.p5asnum5from
(selectcount(age)asp1frompersonwhereage>=0andage&lt;11)t1INNERJOIN
(selectcount(age)asp2frompersonwhereage>=11andage&lt;21)t2INNERJOIN
(selectcount(age)asp3frompersonwhereage>=21andage&lt;31)t3INNERJOIN
(selectcount(age)asp4frompersonwhereage>=31andage&lt;41)t4INNERJOIN
(selectcount(age)asp5frompersonwhereage>=41andage&lt;51)t5

希望能帮到你