是否有一个SQL查询来计算特定年份的人数,知道每个人的出生日期和死亡日期?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (34)

我有一张表格,上面显示了人的姓名,出生日期和死亡日期(1900-2000)。我需要知道在一定时期内每年的人数,例如,1940年人口为23亿,1941年为24亿,1942年为22亿,依此类推,直到1950年。

我在SAS Enterprise Guide中工作,可能代码看起来与普通的sql有点不同。至少我想看到这样的事情:

〜人数| 年

2.300.000.000 |1940 2.400.000.000 |1941 .....................

select
count(name),
from db
where bd<1jan1940 and dd>=1jan1940 and dd=<31dec1940
group by month
提问于
用户回答回答于

首先,你必须知道1899年底的初始人口。假设这是20亿。然后每年增加出生人数减去死亡人数。(您必须两次访问该表才能执行此操作,一次用于出生,一次用于死亡。)SUM OVER用于获取运行总计。

我不确定您实际使用的是哪个DBMS,但这是非常标准的SQL:

select yr, 2000000000 + sum(births.cnt - deaths.cnt) over (order by yr)
from
(
  select extract(year from bd) as yr, count(*) as cnt 
  from db
  group by extract(year from bd)
) births
join
(
  select extract(year from dd) as yr, count(*) as cnt 
  from db
  group by extract(year from dd)
) deaths using (yr)
order by yr;

扫码关注云+社区

领取腾讯云代金券