如何将子查询结果作为另一个查询的列名返回?

时间:2019-01-27 22:34:58

标签: sql hive

我正在尝试为配置单元中的视图计算记录计数的平均值/最小值/最大值

select avg(rec_count), max(rec_count), min(rec_count)

并尝试实现类似的内容:

select avg(rec_count), max(rec_count), min(rec_count)
where rec_count in 
(select count(record_number) as rec_count from archives
group by record_number);

但是我收到一条错误消息:

  

失败:SemanticException行0:-1无效的列引用   子查询sq_1的定义中为'rec_count'[   count(record_number)作为来自档案组的rec_count   record_number)]在第2:18行用作sq_1

我想知道是否可以不必创建另一个包含原始表的分组/汇总值的表/视图。

样本数据:

Blockquote

记录号3031有4条记录,4050有6条记录,所以我希望从查询中获得的预期结果是:

  

平均= 5分钟= 4最大= 6

1 个答案:

答案 0 :(得分:1)

我认为您想要类似的东西

select avg(rec_count), max(rec_count), min(rec_count)
from (select record_number, count(*) as rec_count
      from archives
      group by record_number
     ) a