我正在尝试引用count(*),将其保存为总数,稍后再引用,但它不起作用
例如:
select ((count(*) as total)-count(a)),
(total - count(b)),
(total - count(c))
from table;
怎么了?
我知道可以做到
select (count(*) -count(a)),
(count(*) - count(b)),
(count(*) - count(c))
from table;
但是我只想使用一次count(*),将其存储为变量并使用该变量
最佳答案
当别名和其他列处于SELECT的同一级别时,不能将其用作别名。
这是不可能的,因为查询尝试在定义别名之前使用别名。
如果查看这些子句的逻辑查询处理顺序,您会发现WHERE子句是在SELECT之前进行逻辑评估的。可以引用SELECT中分配的列别名的唯一子句是ORDER BY,因为它是唯一在SELECT子句之后求值的子句。您甚至无法在定义别名的同一SELECT子句中引用别名。
关于hadoop - Hive中的Count(*)和As,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22004648/