SQL 服务器:如何计算年龄组的数量 (*)

SQL Server: How to make count(*) of Ages groups

我有一个 Table 用户和一个年龄列。

Name Age
User1 19
User2 25
User3 75

我想显示他们的年龄并计算它。 但我不想具体计算每个年龄段。我想在这样的年龄组中进行:

Age group Count
<18 5
19-34 2
>75 2

我该怎么做?

  1. 使用案例语句对记录进行分类。
  2. 将它们分组并计数

    Select a.AgeGroup, count(*) Count from (
select 
Case when  Age < 19 then '<19' 
     when Age between 19 and 34 then '19-34'
     when  Age > 75 then '>75' end AgeGroup 
from age ) a
group by a.AgeGroup

首先,请注意您无法从您提供给我们的源数据中获得该问题所需的输出。

第二个差距在“19-34”和“> 75”之间,这就是我在输出中添加“else”的原因

另一件要提及的事情是在“<18”和“19-34”之间的逻辑上存在差距 - 这样您就会失去那些 18 岁的人。它必须是“<= 18”或(“< 18”和“18-34”)。

条件“>75”也将忽略那些 75 岁的人。

但这是基于您的问题和源数据的答案

select case when age < 18 then '< 18' when age between 19 and 34 then '19-34' when age > 75 then '> 75' else 'else' end age_group,
       count(1)
  from test_data
 group by case when age < 18 then '< 18' when age between 19 and 34 then '19-34' when age > 75 then '> 75' else 'else' end