Java 使用jOOQ选择rownum/max(rownum)
我正在查看一个SQL查询,它使用Oracle的Java 使用jOOQ选择rownum/max(rownum),java,sql,oracle,jooq,rownum,Java,Sql,Oracle,Jooq,Rownum,我正在查看一个SQL查询,它使用Oracle的rownumpseudocolumn选择行数作为总行数的一部分: ROWNUM/(MAX(ROWNUM) OVER()) 我正试图通过jOOQ编写的查询来完成同样的任务。可能吗?我不确定你的问题是否正确-你需要的是这个吗 SQL> select row_number() over(order by ename)/(count(*) over()) fraction from emp; FRACTION
rownum
pseudocolumn选择行数作为总行数的一部分:
ROWNUM/(MAX(ROWNUM) OVER())
我正试图通过jOOQ编写的查询来完成同样的任务。可能吗?我不确定你的问题是否正确-你需要的是这个吗
SQL> select row_number() over(order by ename)/(count(*) over()) fraction from emp;
FRACTION
----------
.08333
.16667
.25000
.33333
.41667
.50000
.58333
.66667
.75000
.83333
.91667
1.00000
此外,CUME_DIST分析函数也很有用:
SQL> SELECT ename, CUME_DIST()
2 OVER (ORDER BY ename) fraction
3 FROM emp
4 /
ENAME FRACTION
---------- ----------
ALLEN .08333
BLAKE .16667
CLARK .25000
FORD .33333
JAMES .41667
JONES .50000
KING .58333
MARTIN .66667
MILLER .75000
SMITH .83333
TURNER .91667
WARD 1.00000
虽然可能更适合实际查询,但以下是jOOQ中的ROWNUM
解决方案:
// Qualified
DSL.rownum().div(DSL.max(DSL.rownum()).over());
// With static imports of DSL.*
rownum().div(max(rownum()).over());
另请参见:谢谢-
CUME_DIST
正是我所需要的,jOOQ直接支持它。啊,这就解释了。我们较旧版本的jOOQ没有rownum
。啊哈,在最近的一个版本中,它已被移动(复制)到DSL
。以前,它是在。如果您缺少任何特定的功能,您可以始终求助于编写自己的“MyDSL
”对象,该对象提供字段
。