当前位置: 首页 > 知识库问答 >
问题:

JOOQ窗口分区顺序DESC

曹伟泽
2023-03-14

我尝试将以下PostgreSQL查询表述为Jooq:

SELECT * FROM
    (SELECT *, row_number() OVER (PARTITION BY propertyid ORDER BY validfrom DESC) 
        AS rownum FROM propertyvalue WHERE validfrom <= '1978-01-01T00:00:00Z') X
WHERE rownum = 1;

因此,我想用一个使用窗口函数的嵌套查询编写一个查询,并首先从内部查询开始。我走了那么远:

ctx.select(PROPERTYALUE.fields(), DSL.rowNumber().over().
       partitionBy(PROPERTYVALUE.propertyid).orderBy(PROPERTYVALUE.validfrom).???)

在orderBy命令之后,我在Jooq中不再使用DESC选项。只有像rangefollowingrowscurrentrow这样的命令,还有像desc()这样的继承命令,它返回一个SortField-object,我不能再调用所需的后续命令。

共有1个答案

澹台冯浩
2023-03-14

这样写:

java prettyprint-override">DSL.rowNumber()
   .over()
   .partitionBy(PROPERTYVALUE.propertyid)
   .orderBy(PROPERTYVALUE.validfrom.desc()))

请注意这样一个事实:我在列validfrom上调用了desc(),以便将结果sortfield传递给窗口函数调用的orderby()子句。

您尝试做的是按窗口函数表达式排序,例如在select语句的order by子句中。例如:

SELECT *
FROM propertyvalue 
WHERE validfrom <= '1978-01-01T00:00:00Z'
ORDER BY row_number() OVER (PARTITION BY propertyid ORDER BY validfrom) DESC
 类似资料:
  • 我尝试了以下查询,但没有编译: order BY不支持子查询吗?

  • 对于排列,给定和,我有一个函数,可以按字典顺序查找th排列。另外,给定一个排列,我有一个函数,可以在的所有排列中找到该排列的词典索引。为此,我使用了这个答案中建议的“阶乘分解”。 现在我想对的整数分区做同样的事情。例如,对于,我希望能够在索引(左)和分区(右)之间来回: 我试过一些方法。我想到的最好的是 其中给出了以下内容: 这不太管用,但似乎在正确的轨道上。我之所以想到这一点,是因为它计算了我必

  • 根据Apache Kafka文档,消息的顺序可以在一个分区或一个主题中的一个分区内实现。在这种情况下,我们得到的并行性好处是什么,它相当于传统的MQ,不是吗?

  • 问题内容: 因此,这不是您的平均“条件排序依据”问题……我这里有一个非常棘手的问题。:-)我想允许我的存储过程为结果提供条件排序顺序。通常,可以通过以下方式完成此操作: 我想围绕实际/声明,但这不起作用。上面的方法起作用的原因是因为,当不等于给定值时,SQL Server会将语句转换为常数。因此,如果为0,则实际上有: 那么,第一个排序表达式什么也不做。之所以可行,是因为您可以在常规语句中在子句中

  • 我正试图编写一个小的Flink数据流,以更好地了解它的工作原理,我面临着一个奇怪的情况:每次运行它时,我都会得到不一致的输出。有时我期待的一些记录丢失了。请记住,这只是我为学习DataStream API的概念而构建的一个玩具示例。 我有一个大约7600行的CSV格式数据集,如下所示: 完整的数据集在这里:https://pastebin.com/rknnRnPc 没有特殊字符或引号,因此简单的字