Hive 在配置单元中不使用窗口函数实现稠密_秩函数
我试图在不使用窗口函数(稠密秩)的情况下实现稠密秩函数 在中尝试以下查询:Hive 在配置单元中不使用窗口函数实现稠密_秩函数,hive,dense-rank,windowing,Hive,Dense Rank,Windowing,我试图在不使用窗口函数(稠密秩)的情况下实现稠密秩函数 在中尝试以下查询: select deptID, salary, (select count(distinct Salary) from Employee e where e.deptID = Employee.deptID and e.salary >= Employee.Salary) as dense_rank from Employee order by deptID, Salary Desc; 在配置单元中执行
select deptID, salary,
(select count(distinct Salary)
from Employee e
where e.deptID = Employee.deptID and e.salary >= Employee.Salary) as dense_rank
from Employee order by deptID, Salary Desc;
在配置单元中执行此查询时,我遇到以下错误:
NoviableException(244@[435:1:PreferenceEqualExpression:((LPAREN PreferenceBitWiseOrExpression逗号)=>PreferenceEqualExpression Multiple | PreferenceEqualExpressionSingle);)
位于org.antlr.runtime.DFA.novibalall(DFA.java:158)
位于org.antlr.runtime.DFA.predict(DFA.java:116)
位于org.apache.hadoop.hive.ql.parse.HiveParser\u IdentifiersParser.precenceequalpression(HiveParser\u identiersparser.java:8221)
位于org.apache.hadoop.hive.ql.parse.HiveParser\u IdentifiersParser.precencenotexpression(HiveParser\u identiersparser.java:10008)
位于org.apache.hadoop.hive.ql.parse.HiveParser\u IdentifiersParser.precenceandexpression(HiveParser\u identiersparser.java:10127)
位于org.apache.hadoop.hive.ql.parse.HiveParser\u IdentifiersParser.prevenceorexpression(HiveParser\u identiersparser.java:10286)
位于org.apache.hadoop.hive.ql.parse.HiveParser\u IdentifiersParser.expression(HiveParser\u IdentifiersParser.java:6218)
位于org.apache.hadoop.hive.ql.parse.HiveParser.expression(HiveParser.java:51844)
位于org.apache.hadoop.hive.ql.parse.HiveParser\u SelectClauseParser.selectItem(HiveParser\u SelectClauseParser.java:2951)
位于org.apache.hadoop.hive.ql.parse.HiveParser\u SelectClauseParser.selectList(HiveParser\u SelectClauseParser.java:1467)
位于org.apache.hadoop.hive.ql.parse.HiveParser\u SelectClauseParser.selectClause(HiveParser\u SelectClauseParser.java:1194)
位于org.apache.hadoop.hive.ql.parse.HiveParser.selectClause(HiveParser.java:51847)
位于org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:45661)
位于org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:45568)
位于org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:44584)
位于org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:44454)
位于org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1696)
位于org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1178)
位于org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:204)
位于org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166)
位于org.apache.hadoop.hive.ql.Driver.compile(Driver.java:404)
位于org.apache.hadoop.hive.ql.Driver.compile(Driver.java:329)
位于org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1158)
位于org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1253)
位于org.apache.hadoop.hive.ql.Driver.run(Driver.java:1084)
位于org.apache.hadoop.hive.ql.Driver.run(Driver.java:1072)
位于org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:232)
位于org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:183)
位于org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:399)
位于org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:776)
位于org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:714)
位于org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:641)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.apache.hadoop.util.RunJar.run(RunJar.java:221)
位于org.apache.hadoop.util.RunJar.main(RunJar.java:136)
失败:ParseException行1:24无法识别表达式规范中“(”选择“计数”)附近的输入
请告诉我如何克服这个错误,并且我们可以在不使用
densite\u-rank()
的情况下获得与densite-rank相同的功能,您想要避免densite\u-rank
的原因是什么?我不是在避免使用它。渴望知道使用此功能的其他方法。