Impala 中 SELECT 语句的算术运算

Posted

技术标签:

【中文标题】Impala 中 SELECT 语句的算术运算【英文标题】:Arithmetic operation with SELECT statements in Impala 【发布时间】:2015-11-25 17:14:03 【问题描述】:

我正在编写一个查询,该查询需要对行的类型进行 GROUP BY,然后将该值除以总数以了解 IMPALA 中总数的百分比。 例如:

Name                           performance
something type1 something           15
something type1 something           18
something type2 something           23
something something something       345
something type2 something           23

SELECT
CASE WHEN name like '%type1%' then 'type 1'
    WHEN name like '%type2%' then 'type2'
    ELSE 'other' END as type
,sum(performance) / (SELECT sum(performance) FROM table)
FROM table
GROUP BY type 

这给了我一个 AnalysisException 错误:选择列表中不支持子查询。 谁能告诉我如何解决这个问题?

【问题讨论】:

我不明白你是不是真的从同一张表中提取:sum(performance) / (SELECT sum(performance) FROM table) FROM table 【参考方案1】:

我认为它只需要“()”

SELECT
(CASE WHEN name like '%type1%' then 'type 1'
    WHEN name like '%type2%' then 'type2'
    Else 'other' END) as type
,sum(performance) / (SELECT sum(performance) FROM table)
FROM Table
GROUP BY type

【讨论】:

以上是关于Impala 中 SELECT 语句的算术运算的主要内容,如果未能解决你的问题,请参考以下文章

Oracle-18-select语句初步&SQL中用算术表达式&别名的使用&连接运算符%distinct&where子句

bash的算术运算和条件测试语句

shell算术运算和文件测试及多分支if语句

Django 模板中的错误:我可以在 if 语句中进行算术运算吗

bash的算术运算和条件测试语句

Linux学习记录-数字比较-if语句-算术运算