Hive中SQL的执行顺序: (1)from:对from左边的表和右边的表计算笛卡尔积,产生虚表VT1; (2)on: 对虚表VT1进行on过滤,只有那些符合的行才会被记录在虚表VT2中; (3)join:如果指定了outer join(比如left join、 right join),那么保留表中未匹配的行就会作为外部行添加到虚拟表VT2中,产生虚拟表VT3; (4)where:对虚拟表VT3进行where条件过滤。只有符合的记录才会被插入到虚拟表VT4中; (5)group by:根据group by子句中的列,对VT4中的记录进行分组操作,产生VT5; (6)having: 对虚拟表VT5应用having过滤,只有符合的记录才会被 插入到虚拟表VT6中; (7)select:执行select操作,选择指定的列,插入到虚拟表VT7中; (8)distinct:对VT7中的记录进行去重。产生虚拟表VT8; (9)order:将虚拟表VT8中的记录按照进行排序操作,产生虚拟表VT9; (10)limit:取出指定行的记录,产生虚拟表VT10, 并将结果返回; partition by 通常会用于和开窗及分析函数一起使用,partition by是在select执行完后 的结果集上进行的; (每日1小题,进步1点点)