比如,如下是会报错的,year这个别名此时还是不能用的

select deptno `dept`,year(hiredate) `year`,sum(sal)
from tb_emp
group by deptno,year;

org.apache.hadoop.hive.ql.parse.SemanticException:Line 5:16 Invalid
table alias or column reference ‘year’: (possible column names are:
empno, ename, job, mgr, hiredate, sal, comm, deptno)

如下这种不用别名是可以的,同时虽然出现了两次year(hiredate),但是并不会增加运行耗时

select deptno `dept`,year(hiredate) `year`,sum(sal)
from tb_emp
group by deptno, year(hiredate);
+----+----+----+
|dept|year|c2  |
+----+----+----+
|NULL|NULL|NULL|
|10  |1981|7450|
|10  |1982|1300|
|20  |1980|800 |
|20  |1981|5975|
|20  |1987|4100|
|30  |1981|9400|
+----+----+----+

原因

在hive中,group by的执行顺序在select之前,所以…

总结

  • 要么嵌套要么不要使用列别名

参考

group by 和where 条件后面不能用刚设置的别名。_weixin_34245169的博客-CSDN博客
https://blog.csdn.net/weixin_34245169/article/details/93737105

为什么group by后面不能使用列的别名_涤生手记-CSDN博客

Hive group by后面不能用列别名相关推荐

  1. 为什么Hive中的group by后面不能使用字段别名?

    为什么Hive中的group by后面不能使用字段别名呢?看了这篇文章你将一目了然. 文章目录 1. 案例说明 2. 分析原因 3. 解决办法 4. 执行效率 5. 总结 1. 案例说明 我们以一个例 ...

  2. SQL语句中,为什么where子句不能使用列别名,而order by却可以?

    当我们使用某个表达式作为输出的一列时,我们无法再Where条件中直接使用该列作判断条件.    例如下面的SQL语句: select id, (c1 + c2) as s from t1  where ...

  3. mysql中别名(列别名和表别名)

    1.介绍 使用MySQL别名来提高查询的可读性. MySQL支持两种别名,称为列别名和表别名. 有时,列的名称是一些表达式,使查询的输出很难理解.要给列一个描述性名称,可以使用列别名. 用法: SEL ...

  4. hive 外部表不支持添加列

    hive 外部表不支持添加列 其实在之前我也不知道,在官网上面也没有看到 在操作的时候才发现的 alter table hbase_fct_mcht_item_day add columns(avg_ ...

  5. oracle列别名带双引号笔记

    场景 oracle报错: java.sql.SQLSyntaxErrorException: ORA-00904: "t"."user_account": in ...

  6. Hive表结构操作(增加列,删除列,修改列,移动列)

    前言 Hive 表结构操作 内容 1.给hive表中添加某个字段: 格式: alter table 表名 add columns (字段名 字段类型 comment '字段描述'): 示例1: alt ...

  7. sqlite查询乘以某列如果是null就换成_大数据之Hive group by with cube/rollup分组查询...

    group by sql 查询时,我们常将聚合函数和group by 结合起来对某一个或多个字段进行分组查询,例如: select addcode,count(distinct sbtid)uv fr ...

  8. 为什么group by后面不能使用列的别名

    同事工作中遇到一个问题: select   count(billingdate),to_char(billingdate,'YYYYmm') month from tu_trade where to_ ...

  9. hive的lateral view行转列

    1.hive中的行转列最常用的就是lateral view的语法,例如: select id,vcol from t lateral view explode(col) vtable as vcol ...

最新文章

  1. Oracle 重做日志简介
  2. 纸牌游戏10点半c语言,python10点半纸牌游戏_【Python】Python编的纸牌游戏
  3. Franzis CutOut 9 Professional中文版
  4. 基于keepalived搭建MySQL高可用集群
  5. 210221阶段三线程、信号量、互斥锁
  6. 使用Google Guava创建收藏和实现不变性
  7. 如何修改wince的网络配置
  8. 经典sql语句50题_SQL面试经典50题:带你从建表开始
  9. Java中的try/catch/finally
  10. 调查:Win7是勒索病毒的重灾区 XP受影响不足0.1%
  11. ffmpeg-20160629-git-bin.7z
  12. 算法竞赛入门经典(第二版) 答案汇总(持续更新)
  13. 联想笔记本电脑V110拆机、清灰详细步骤
  14. 电路分析基础笔记(静态电路+动态电路)
  15. 传统存储方式_制造核心系统传统存储升级全闪存F900或混闪V7000F实施方案在线探讨...
  16. 计算机cpu电压,怎么才能知道自己电脑的cpu电压
  17. 强化学习代码实操和讲解(一)
  18. ASP.NET Core 导出Excel文件
  19. Semantic Segmentation: A thorough Review
  20. tableau-客户留存分析模型

热门文章

  1. 常见的SAS接口类型、接口连接器外观详细解读
  2. mpacc和计算机硕士,考MPAcc还是工作?读研三年VS工作三年对比!
  3. python json dumps 中文_Python下调用json.dumps中文显示问题解决办法
  4. 在pytorch中使用tensorboard
  5. tcl 查询与设置编码格式
  6. Android Studio中快捷键实现try catch等功能包含代码块
  7. php 占位符替换_AJAX ASP / PHP实例
  8. sum 去重_总结leetcode上【排列问题】【组合问题】【子集问题】回溯算法去重的两种写法!...
  9. java json data_java中json数据格式的处理
  10. 不能使用 float 和 double 来表示金额等精确的值