配置单元中的列引用无效

时间:2017-11-01 20:26:07

标签: sql hive

当我运行以下查询时,我收到错误"无效的列引用:cnt"。任何建议都会很棒!!

     select count(customer) as cnt from (
         select customer, concat(visid, lowid), count(name) 
      from  tab1 where date_time between '2017-05-01 00:00:00' and '2017-05-31 23:59:59' and name in ('payment: Complete', 'check: Complete')
         group by evar71, concat(visid, lowid)) t1
      where cnt > 1;

3 个答案:

答案 0 :(得分:0)

我认为hive更喜欢group by中的别名。此外,几个列别名不正确:

select count(customer) as cnt
from (select customer, concat(visid, lowid) as ids, count(name) as cc
      from tab1
      where date_time >= '2017-05-01' and date_time < '2017-06-01' and
            name in ('payment: Complete', 'check: Complete')
      group by customer, ids
     ) t1
where cc > 1;

答案 1 :(得分:0)

另一种方法。

select count(customer) as cnt from (
         select customer, concat(visid, lowid), count(name) 
      from  tab1 where date_time between '2017-05-01 00:00:00' and '2017-05-31 23:59:59' and name in ('payment: Complete', 'check: Complete')
         group by evar71, concat(visid, lowid)) t1
    having count(customer)  > 1;

答案 2 :(得分:0)

在聚合之前应用

WHERE过滤器 这就是为什么where cnt > 1不起作用的原因。 HAVING关键字引入了聚合条件,它在聚合后作为过滤器使用。

select count(customer) cnt
...
where rows_filter_condition_here --before aggregation
having count(customer) > 1       --aggregation results filter
order by cnt desc                --this works after aggregation