添加显示“分组”值的新列(mySQL)

时间:2015-07-24 16:10:48

标签: mysql

我的桌子上有一个年龄段的专栏。

我想要做的是在现有表格中添加一个新列,其中包含“年龄段”,如“小于18”,“18-24”,“25-34”等。

因此,例如,如果行具有18作为public static void main(String[] args){ String test = "\\d"; String word = "a1ap1k7"; Pattern p = Pattern.compile(test); Matcher b = p.matcher(word); while (b.find()) { int start = b.start(); String text = b.group(); int stop = b.end(); System.out.println(start + text + stop); } } 列的值,则在名为age的新列中,该值将添加为“18-24”(作为字符串)。

除了在年龄栏中获取唯一值之外,我不知道如何开始这个。

更新以下是我设法得到的内容:

age_group

这会在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) 行引发错误。我该如何解决?

1 个答案:

答案 0 :(得分:1)

基本的是这个:

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操作组合在一起。你做不到。™