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
的原因是什么?我不是在避免使用它。渴望知道使用此功能的其他方法。