gpt4 book ai didi

sql - 如何在 Oracle 数据库中使用 SQL 查询根据年龄组获取人数?

转载 作者:行者123 更新时间:2023-12-04 13:39:48 25 4
gpt4 key购买 nike

假设我有以下查询(这是我实际查询的一部分),它检索那个人的 person_id 和年龄:

select p.person_id,TRUNC ((SYSDATE - p.birth_date) / 365.25, 0) AS age
from person p

现在得到这个年龄后,我想得到每个年龄组的人数,例如:

 group                count
age <=5 100
age >5 and age <=10 50
age > 10 15
... ...

我可以使用 group by 子句来计算个人年龄。但是如何计算两个年龄之间的数呢?

谁能告诉我怎么做?

您可以使用以下数据作为引用:

   pid    age
1 4
2 13
3 10
4 8
5 9
6 12

所以结果应该是:

   group      count
age < =5 1
>5 & <=10 3
> 10 2

最佳答案

首先,您的年龄计算不正确。您几乎肯定想要测量两个日期之间的月份,而不是希望除以 365.25 就足够接近了

trunc( months_between( sysdate, p.birth_date )/ 12 )

其次,如果你想按范围分组,你只需要在 case 语句中选择范围并按该范围分组

SELECT (case when age <= 5
then 'age <= 5'
when age > 5 and age <= 10
then 'age > 5 and age <= 10'
else 'age > 10'
end) bucket,
count(*)
FROM( SELECT trunc( months_between( sysdate, p.birth_date )/ 12 ) age
FROM person p )
GROUP BY (case when age <= 5
then 'age <= 5'
when age > 5 and age <= 10
then 'age > 5 and age <= 10'
else 'age > 10'
end)

关于sql - 如何在 Oracle 数据库中使用 SQL 查询根据年龄组获取人数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31667844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com