我的桌子上有一个年龄段的专栏。
我想要做的是在现有表格中添加一个新列,其中包含“年龄段”,如“小于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)
行引发错误。我该如何解决?
答案 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
操作组合在一起。你做不到。™