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
我该怎么做?
- 使用案例语句对记录进行分类。
- 将它们分组并计数
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
我有一个 Table 用户和一个年龄列。
Name | Age |
---|---|
User1 | 19 |
User2 | 25 |
User3 | 75 |
我想显示他们的年龄并计算它。 但我不想具体计算每个年龄段。我想在这样的年龄组中进行:
Age group | Count |
---|---|
<18 | 5 |
19-34 | 2 |
>75 | 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