大家好,这是我第一次发布我的问题,请祝我好运, 我在显示按年龄分组的数据时遇到了问题,这是我的疑问

SELECT 
    CASE WHEN age BETWEEN 0 AND 18 OR age IS NULL THEN '0-18' 
         WHEN age BETWEEN 19 AND 30 THEN '19-30' 
         WHEN age BETWEEN 31 AND 35 THEN '31-35' 
         WHEN age BETWEEN 36 AND 50 THEN '36-50' 
        WHEN age BETWEEN 51 AND 100 THEN '50+' 
    END AS age_group, 
    COALESCE(COUNT(*), 0) AS count 
FROM patient_registration 
GROUP BY age_group;

我试图运行上面的查询来显示数据,因为你可以看到上面的查询执行没有任何错误,但我需要一个年龄组的解决方案,其中的计数是0的例如.

我没有0到18岁的记录,它没有显示在输出中,但我想这样显示记录

age_group count
0-18 0
19-30 192
31-35 83
36-50 223
50+ 222

如果案子不能令人满意,我想给你看0号.

以下是我到目前为止try 过的:

SELECT 
  CASE 
    WHEN age BETWEEN 0 AND 18 OR age COUNT is NULL THEN '0-18'
    WHEN age BETWEEN 19 AND 30 THEN '19-30'
    WHEN age BETWEEN 31 AND 35 THEN '31-35'
    WHEN age BETWEEN 36 AND 50 THEN '36-50'
    WHEN age BETWEEN 51 AND 100 THEN '50+'
  END AS age_group, 
  COALESCE(COUNT(*), NULL) AS count
FROM patient_registration
GROUP BY age_group;

有没有其他方法可以让我试一试?

enter image description here

推荐答案

此选项可能对您有效.我返回所有列,而不考虑计数,并且每一列都是有问题的年龄段.

SELECT 
      sum( case WHEN age BETWEEN 0 AND 18 
                OR age IS NULL THEN 1 else 0 end ) Age0_18, 
      sum( case WHEN age BETWEEN 19 AND 30 THEN 1 else 0 end ) Age19_30, 
      sum( case WHEN age BETWEEN 31 AND 35 THEN 1 else 0 end ) Age31_35, 
      sum( case WHEN age BETWEEN 36 AND 50 THEN 1 else 0 end ) Age36_50, 
      sum( case WHEN age > 50 THEN 1 else 0 end ) AgeOver50 
   FROM 
      patient_registration 

结果将是

Age0_18   Age19_30   Age31_35   Age36_50   AgeOver50
0         192        83         223        222

Mysql相关问答推荐

在MySQL查询中查找和替换表内的值

将时间戳四舍五入到最接近的半小时而不遗漏丢失的数据

mysqli 无法以非 root 用户身份连接

使用 SELECT 时应锁定多少行 .. FOR UPDATE LIMIT 1

Select 不同的列,其中另一列不包含特定值

创建 mySQL BEFORE/AFTER UPDATE 触发器

完全匹配 IN 子句中的所有值

优化解析 5000 万行 MySQL 表的请求

sequelize 中最好的更新方法是什么

分别针对每个不同的列 Select 聚合

如何让连续 3 周或以上的用户有订单?

如何将结果列中的不同值按其他列sql中的值带入单行

在 Spring Data jpa 中的 @Query 中无法识别本机查询

在 MySQL 中转换 JSON 数组值

此插页中的X是什么> X'3C2F756C3E'

MySQL计算特定值的列

不正确的整数(2147483647)被插入到 MySQL 中?

如何在特定数据库中创建表?

MySQL 实用程序 - ~/.my.cnf 选项文件

#1030 - 从存储引擎 Aria 收到错误 176读取错误校验和的页面