【发布时间】:2017-08-18 09:15:00
【问题描述】:
我在 SQL 中有以下查询:
select midquery.account, midquery.name, midquery.label, midquery.labelfrequency
from(
-- Count the appearance of each label.
select count(*) as labelfrequency, account, name, label
from(
select account, name, label from myTable
) innerquery
group by account, name, label
) midquery
-- Select most frequent values only.
where rank() over
(partition by midquery.account, midquery.name
order by midquery.labelfrequency desc) = 1
这个想法是找到每个名称帐户集最频繁的标签。当我运行此查询时,我收到以下错误:
Error while compiling statement: FAILED: SemanticException [Error 10002]: Line 12:74 Invalid column reference 'labelfrequency': (possible column names are: labelfrequency, account, name, label)
我不太明白为什么解释器找不到列 labelfrequency 但可以提出建议。您对如何解决此问题有任何建议吗?
编辑:如果我将 rank() 移动到选择部分,我会得到结果。
select midquery.account, midquery.name, midquery.label, midquery.labelfrequency,
rank() over (partition by midquery.account, midquery.name
order by midquery.labelfrequency desc)
from(
-- Count the appearance of each label.
select count(*) as labelfrequency, account, name, label
from(
select account, name, label from myTable
) innerquery
group by account, name, label
) midquery
【问题讨论】: