-1

我目前正在为一个项目编写一些 SQL。我想尝试练习案例表达,在这种情况下,练习按年龄分组记录。

这是我正在使用的表:人

Name | Age
-----------
Mike | 32
Angela | 11
Chris | 65
Nat | 20
Sandra | 45
Shane | 82

我想使用 case 表达式按年龄对这些人进行分组。我想将人们分为-18 岁及以下 -19 至 40 岁 -41 岁及以上

到目前为止,我一直在尝试编写这样的 case 表达式:

select name, age
from person
order by
(case
when age < 18 //group first
when (age >= 19 and age < 40 //group second
else //group third
end);

显然这是行不通的。我一直在尝试更好地理解 case 表达式,有人可以给我一些指示吗?

4

3 回答 3

0

这就是您要实现的目标。

select name, age
 from person order by 
 case when age < 18 then 0 when age >=19 and age <=40 then 1 else 2 end 
于 2019-09-02T07:28:27.293 回答
0

我们可以尝试使用CASE表达式来形成年龄组:

SELECT
    Name,
    Age,
    CASE WHEN Age <= 18 THEN 'young'
         WHEN Age <= 40 THEN 'middle'
         ELSE 'older' END AS age_group
FROM yourTable
ORDER BY
    Age;
于 2019-09-02T07:28:28.317 回答
0

尝试这个。

   Select  AgeGroup, count(distinct *) as 
    count_names
   from(SELECT NAME, CASE WHEN 
      Age <= 
      18 THEN 'young (1-18)'
     WHEN Age <= 40 THEN 'Middle(19- 
     40)'
     ELSE 'older (40-above)' END as 
      AgeGroup) group by AgeGroup
于 2019-09-02T07:51:30.597 回答