hadoop - Hive中的Count(*)和As

标签 hadoop hive hadoop-streaming hiveql

我正在尝试引用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/

相关文章:

使用 zip 输入文件的 Hadoop 流式处理

hadoop - 是否建议启动ambari中的所有服务以加快通信速度?

hadoop - 从 hdfs 加载数据到 hive 结果表中输出 null

hive - 使用 hive 连接到远程服务器

hadoop - 使用在hadoop上运行的jar运行配置单元脚本

hadoop - 在将文件提供给HDFS之前如何对其进行串联?

ubuntu - Namenode 和 Datanode 没有在 hadoop 中启动

hadoop - Hadoop排序示例失败,出现 'not a SequenceFile'。如何设置SequenceFile

java - 从 ID Amazon EMR 获取集群对象

hadoop - reducer 的输出发送到 HDFS,其中 map 输出存储在数据节点本地磁盘中?