mysql - SQL显示年龄范围

标签 mysql sql

我正在写一个年龄范围的查询,我想在其中显示所有年龄段的人数,例如

    AGE   PEOPLE
   "0-10"  0
   "11-20" 2
   "21-30" 5
   "31-40" 0
   "41-50" 1

我试过

SELECT SUM(CASE WHEN age < 10 THEN 1 ELSE 0 END) AS [Under 10],
        SUM(CASE WHEN age BETWEEN 11 AND 20 THEN 1 ELSE 0 END) AS [11-20],
        SUM(CASE WHEN age BETWEEN 21 AND 30 THEN 1 ELSE 0 END) AS [21-30]
 FROM people

但是它将范围显示为列名

   0-10  11-20 21-30 31-40 41-50
     0     2     5     0    1

这是我不想要的。

我也试过 GROUP BY 但它没有显示计数为 0 的范围。

最佳答案

您可以使用UNION ALL:

SELECT '[Under 10]' as Age, SUM(CASE WHEN age < 10 THEN 1 ELSE 0 END) as People
FROM people
UNION ALL
SELECT '[11-20]', SUM(CASE WHEN age BETWEEN 11 AND 20 THEN 1 ELSE 0 END)
FROM people
UNION ALL
SELECT '[21-30]', SUM(CASE WHEN age BETWEEN 21 AND 30 THEN 1 ELSE 0 END)
FROM people;

关于mysql - SQL显示年龄范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57603617/

相关文章:

mysql - 从表中选择行,其中列值是存储过程中传递的值的子集

mysql - REGEX_REPLACE 不匹配从开始到第一次出现 5 位数字单词的所有字符

c# - SQL 查询错误 - "Column cannot be null"

php - 将数组保存到mysql数据库中

sql - 为什么 SQL 查询返回重复项?

创建触发器时出现 SQLiteException « "ON"附近的逻辑错误 »

mysql - 如何更改排序规则以使mysql不区分大小写

python - 如何优化 DAL web2py 查询?

sql - 从表中的多个 XML 行中选择单个 XML

mysql - SQL 按索引对多个结果进行排序,通过添加对应于同一键的索引