Query does not found column, suggests same column in Hive SQL -
i have following query in sql:
select midquery.account, midquery.name, midquery.label, midquery.labelfrequency from( -- count appearance of each label. select count(*) labelfrequency, account, name, label from( select account, name, label mytable ) innerquery group account, name, label ) midquery -- select frequent values only. rank() on (partition midquery.account, midquery.name order midquery.labelfrequency desc) = 1
the idea find frequent label per name-account set. when run query, following error:
error while compiling statement: failed: semanticexception [error 10002]: line 12:74 invalid column reference 'labelfrequency': (possible column names are: labelfrequency, account, name, label)
i don't quite understand why interpreter not find column labelfrequency can suggest it. have got suggestions on how tackle issue?
edit: if move rank() select part, results.
select midquery.account, midquery.name, midquery.label, midquery.labelfrequency, rank() on (partition midquery.account, midquery.name order midquery.labelfrequency desc) from( -- count appearance of each label. select count(*) labelfrequency, account, name, label from( select account, name, label mytable ) innerquery group account, name, label ) midquery
window functions not allowed in where
clause. there reasons this, can think of rule of sql -- similar column aliases not being recognized.
(the real reason specifying how window function operate when there multiple filtering conditions. (almost ?) impossible come coherent set of rules.)
having said that, can simplify query:
select t.account, t.name, t.label, t.labelfrequency (select count(*) labelfrequency, account, name, label, rank() on (partition account, name order count(*) desc ) seqnum mytable t group account, name, label ) t seqnum = 1;
that is, window functions , aggregation functions can combined. , don't need subquery specify handful columns.
Comments
Post a Comment