如何按动态年龄组显示用户数量
How to show number of users by dynamic age groups
我有一个 table 存储用户的 DoB。现在我需要一个报告(crystal 报告)来显示在不同年龄段有多少用户。
例如报告需要显示:
年龄:1-10:50 位用户
年龄:11-20:30 位用户
年龄:21-30:60个用户
等等...
报告应遵循以下规则:
年龄范围很容易改变(上面例子中的范围是10)
最后一个范围是根据最早的用户自动计算的
其实我暂时不知道该怎么做。非常感谢任何帮助。
谢谢!
您可以使用算术定义范围。确切的语法可能因数据库而异,但基本上是:
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 等等。
我有一个 table 存储用户的 DoB。现在我需要一个报告(crystal 报告)来显示在不同年龄段有多少用户。
例如报告需要显示:
年龄:1-10:50 位用户
年龄:11-20:30 位用户
年龄:21-30:60个用户 等等...
报告应遵循以下规则:
年龄范围很容易改变(上面例子中的范围是10)
最后一个范围是根据最早的用户自动计算的
其实我暂时不知道该怎么做。非常感谢任何帮助。
谢谢!
您可以使用算术定义范围。确切的语法可能因数据库而异,但基本上是:
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 等等。