我的表格中有一个包含年龄的列。
我想要做的是向现有表中添加一个新列,其中包含年龄的“桶”,例如:“小于 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/