如何按动态年龄组显示用户数量

How to show number of users by dynamic age groups

我有一个 table 存储用户的 DoB。现在我需要一个报告(crystal 报告)来显示在不同年龄段有多少用户。

例如报告需要显示:

年龄:1-10:50 位用户

年龄:11-20:30 位用户

年龄:21-30:60个用户 等等...

报告应遵循以下规则:

  1. 年龄范围很容易改变(上面例子中的范围是10)

  2. 最后一个范围是根据最早的用户自动计算的

其实我暂时不知道该怎么做。非常感谢任何帮助。

谢谢!

您可以使用算术定义范围。确切的语法可能因数据库而异,但基本上是:

select (floor( (a - 1) / 10 ) * 10 + 1) || '-' ||  (floor( (a - 1) / 10 ) * 10 + 10) as age_range,
       count(*)
from t
group by (floor( (a - 1) / 10 ) * 10 + 1) || '-' ||  (floor( (a - 1) / 10 ) * 10 + 10)
order by min(age);

表达式 floor( (a - 1) / 10 ) * 10 + 1 只是一个获取范围第一年的数学表达式 -- 因此 1-10 在一个组中,11-20 等等。