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

Sql 如何按动态年龄组显示用户数,sql,crystal-reports,Sql,Crystal Reports,我有一个存储用户DoB的表。现在我需要一个报告(crystal report),显示在不同年龄段有多少用户 例如,报告需要显示: 年龄:1-10:50用户 年龄:11-20:30用户 年龄:21-30:60用户 等等 报告应遵循以下规则: 年龄范围很容易改变(上例中的范围为10岁) 最后一个范围是根据最老的用户自动计算的 事实上,我现在不知道怎么做。我真的很感谢你的帮助 谢谢 您可以使用算术定义范围。具体语法可能因数据库而异,但基本上是: select (floor( (a - 1) / 10

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

例如,报告需要显示:

年龄: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分,依此类推。

    用您使用的数据库标记您的问题。感谢Gordon的回答,老实说,我不确定我是否准确地理解了您,但这是否意味着使用您的建议创建一个函数来计算接受DoB作为输入和返回范围的范围(例如1-10、11-20…)。然后使用此功能查询范围以及其他字段,并按范围分组,我们可以统计属于范围的用户。这就是你的意思吗?@ClearActionConsistent。是的,就是这个主意。天哪,我过去几天一直在考虑你的建议,现在我明白了。再次感谢。我还没有实施,但我想我应该记下你的答案。