gpt4 book ai didi

postgresql - 使用多个条件对分区进行排序

转载 作者:行者123 更新时间:2023-11-29 13:11:13 25 4
gpt4 key购买 nike

我尝试使用多个标准对分区进行排序。

通过此查询,我得到以下输出:

SELECT id, aggregate_id, aggregate_update, detection_time
FROM report.report_table R1
WHERE table_name NOT LIKE 'AGGREGATE_ALERT_EVENT'
ORDER BY MAX(aggregate_update)
OVER (PARTITION BY aggregate_id) ASC,
aggregate_id, aggregate_update asc, detection_time desc;

partition sorted by aggregate_update but not detection_time

我们看到行按 aggregate_id 分区。在每个分区内,行首先按 aggregate_update ASC 排序,然后按 detection_time DESC 排序。但是,分区仅按 MAX(aggregate_update) 排序,我希望分区按 MAX(aggregate_update) 和 MAX(detection_time) DESC 排序。我尝试得到以下结果:

partition sorted by aggregate_update but and detection_time

我如何根据多个标准对分区本身进行排序?

最佳答案

我认为这应该给你你想要的行为:

SELECT id, aggregate_id, aggregate_update, detection_time
FROM report.report_table R1
WHERE table_name NOT LIKE 'AGGREGATE_ALERT_EVENT'
ORDER BY
MAX(aggregate_update) OVER (PARTITION BY aggregate_id),
MAX(detection_time) OVER (PARTITION BY aggregate_id) DESC,
aggregate_id,
detection_time DESC;

如果两个 aggregate_id 组碰巧具有相同的最大更新值,我添加的第二个排序条件会打破平局。在这种情况下,排序会回退到检测时间较长的组,以决定哪个组先出现。

关于postgresql - 使用多个条件对分区进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54477050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com