Presto新手求助:如何用简单条件判断生成新列
解决方案
首先,你的代码存在几个基础语法和字段匹配问题,以下是修正后的实现:
1. 核心问题修正
- SELECT子句中多个列之间必须用逗号分隔,你漏写了
num和CASE语句之间的逗号 - 原表字段是
id和number_of_customers,你写的name、count和实际字段不匹配 - 需要给CASE生成的计算列指定别名(比如
tag),方便识别
2. 适配你需求的完整SQL
结合你的示例数据和期望结果,假设标记规则为(可根据实际需求调整范围):
number_of_customers >= 200000→ 标记为A10000 <= number_of_customers < 200000→ 标记为B- 其他范围可自行补充扩展
对应的Presto SQL语句:
SELECT id, number_of_customers AS num, CASE WHEN number_of_customers >= 200000 THEN 'A' WHEN number_of_customers >= 10000 THEN 'B' -- 这里可以继续添加更多条件,比如 WHEN number_of_customers >= 1000 THEN 'C' ELSE 'X' -- 不符合上述条件时的默认标记 END AS tag FROM dbs LIMIT 10;
3. 关键注意点
- CASE语句会从上到下匹配第一个满足的条件,所以范围更大的条件要写在前面(比如先判断>=200000,再判断>=10000,避免逻辑覆盖错误)
- 你可以根据业务需求,任意添加WHEN分支来扩展4-5种标记规则
内容的提问来源于stack exchange,提问作者Gerry
相关产品推荐
相关产品推荐

