现有结构
姓名 年龄
啊啊 10
等待 20
大幅 32
广告 40
地方 20
用SQL语句实现
年龄段 人数
10-20 3
21-30 1
30- 1
请高手指点!
四楼的还有点谱,可我不大懂!其他的哥们儿姐们儿的达不到效果!
年龄段 人数
10-20 1
20-30 2
30-40 2
类似这样!请高手帮帮忙!
用sql语句实现年龄分段统计
答案:5 悬赏:20
解决时间 2021-12-22 08:48
- 提问者网友:失败的占卜者
- 2021-12-21 19:28
最佳答案
- 二级知识专家网友:糜废丧逼
- 2021-12-21 20:40
就是这样了, 还用的着这么多union? 一条语句就搞定!
select case when (age >=10 and age <=20) then '10-20' when (age >=21 and age <=30) then '21-30' else '30-' end 'eag_layer', count(*) emps from emp
group by
case when (age >=10 and age <=20) then '10-20' when (age >=21 and age <=30) then '21-30' else '30-' end
order by 1
select case when (age >=10 and age <=20) then '10-20' when (age >=21 and age <=30) then '21-30' else '30-' end 'eag_layer', count(*) emps from emp
group by
case when (age >=10 and age <=20) then '10-20' when (age >=21 and age <=30) then '21-30' else '30-' end
order by 1
全部回答
- 1楼网友:一池湖水
- 2021-12-22 00:51
select 寝室号,寝室类型,楼栋号,count(*), decode(substr(寝室类型,1,1),'四',4,'二',2,'六',6,0)-count(*) from 学生表 group by 寝室号,寝室类型,楼栋号,decode(substr(寝室类型,1,1),'四',4,'二',2,'六',6,0);
首先用substr函数截取出来寝室类型中的第一个字符,然后用decode函数判断是四,是二还是6,最后通过group by计算出每个楼栋号下每个寝室里所属房间类型中的实际入住人数和空床位数
我在oracle中执行了一下,是没有问题的,不知道你用的是什么数据库,仅供参考。
- 2楼网友:摧毁过往
- 2021-12-22 00:19
SELECt '10-20' 年龄段, COUNT(*) 人数
FROM [Table]
WHERe [年龄] BETWEEN 10 AND 20
UNIOn ALL
SELECt '21-30' 年龄段, COUNT(*) 人数
FROM [Table]
WHERe [年龄] BETWEEN 21 AND 30
UNIOn ALL
SELECt '31' 年龄段, COUNT(*) 人数
FROM [Table]
WHERe [年龄] > 30
- 3楼网友:安稳不如野
- 2021-12-21 22:41
嘿嘿这个我已经帮你调试过了:
例如:上表名为test表,有name,age两字段,分段统计方法如下:
select '10-20' a,count(*) from test where age>=10 and age<=20
union
select '21-30' a,count(*) from test where age>=21 and age<=30
union
select '30以上' a,count(*) from test where age>=30
其中UNIOn 命令用于从两个表中选取相关的信息,很类似 JOIN 命令。不过,当使用 UNIOn 命令时,所有被选取的列的数据类型应该是相同。
- 4楼网友:虚伪的现实
- 2021-12-21 21:47
先将年龄除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
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯