mysql - 添加显示 "grouped"值的新列 (mySQL)

标签 mysql

我的表格中有一个包含年龄的列。

我想要做的是向现有表中添加一个新列,其中包含年龄的“桶”,例如:“小于 18 岁”、“18-24 岁”、“25-34 岁”等。

例如,如果该行的 age 列的值是 18,则在名为 age_group 的新列中,该值将添加为“18- 24"(作为字符串)。

除了获取年龄列中的唯一值之外,我不知道如何开始。

更新这是我设法得到的:

update full_db2 set age_range = (select
      case when age >= 0 and age <= 10    then "  0 - 10"
           when age > 10 and age <= 50   then " 10+ - 50"
           when age > 50 and age <= 100  then " 50+ - 100"
           else "over 100"
      end AgeRange,
      count(*) as TotalWithinRange
   group by 1)

这会在 group by 行上引发错误。我该如何解决?

最佳答案

基本的事情是这样的:

SELECT age,
       CASE WHEN age < 18 THEN 'Less than 18'
            WHEN age <= 24 THEN '18-24'
            WHEN age <= 59 THEN '25-60'
                           ELSE '60+'
       END agegroup
  FROM table

CASE 表达式将对您的年龄进行分类。

总而言之,您将使用它:

SELECT COUNT(*),
       CASE WHEN age < 18 THEN 'Less than 18'
            WHEN age <= 24 THEN '18-24'
            WHEN age <= 59 THEN '25-60'
                           ELSE '60+'
       END agegroup
  FROM table
 GROUP BY agegroup

还有另一种可能的方法来处理这个问题,该方法基于显示您想要的范围的单独查找表。但这有点困难,但这是可行的。

在您的示例中,您尝试将 GROUP BY 操作与 UPDATE 操作结合起来。你不能那样做。™

关于mysql - 添加显示 "grouped"值的新列 (mySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31615166/

相关文章:

mysql - 按上次发送/接收的消息对用户进行分组

mysql - 比较行并选择最大值

mysql - 我无法检索大于或等于 Sql 中特定日期的日期。

php - Codeigniter 数据表查询不起作用?

php - 将数据库文本值输出到 div

PHP:从 mysql 中删除并重置 MYSQL 数据库中的列?

c# - mysql外部访问

php - 多个字段的 Laravel SUM 使用原始查询返回 null

php - 根据点从一张表中找出一对记录

php - 使用非本地主机用户通过php连接到mysql数据库