gpt4 book ai didi

sql - Oracle/sql/jpa - 对于一年跨度表,如何选择每 7 天具有最大数据(一列)的行?

转载 作者:行者123 更新时间:2023-12-02 04:25:38 28 4
gpt4 key购买 nike

我有一个包含以下列的表格:

时间戳(时间戳)、数据(整数)、id1(整数)、id2(整数)

我的用户将能够提供三个输入:开始日期(标准化为星期日)、结束日期(标准化为星期六)和 id1 列表。

为了简化我的问题,假设开始日期是 2010 年 1 月 1 日(假定为星期日),结束日期是 2010 年 12 月 31 日(假定为星期六),并且 id1 列表是 {100, 101, 102},我的问题是

如何编写“一个”SQL 字符串来收集从 1 月 1 日到 12 月 31 日的每 7 天时间段内每个唯一 id1 和 id2 的最大值(数据)?

是否可以使用类型安全的 JPA 查询来执行此操作?

请注意,我使用 7 天的周期而不是周,因为这里没有周的上下文,以避免边界问题,例如如何处理 20xx 年 12 月 29 日,即 20xx + 1 年第一周,等等。

非常感谢您提前的答复!

-拉詹

最佳答案

'WW' 日期格式给出一年中的周数。

SELECT id1
,id2
,TRUNC(Timestamp,'WW')
,MAX(data)
FROM mytable
WHERE Timestamp BETWEEN :start AND :end
GROUP BY id1, id2, TRUNC(Timestamp,'WW');

如果'WW' 不能满足您的需求(边界问题),您可以采用天数 ('DDD') 并除以 7 ,例如:

TRUNC(TO_NUMBER(TO_CHAR(Timestamp,'DDD'))/7)

关于sql - Oracle/sql/jpa - 对于一年跨度表,如何选择每 7 天具有最大数据(一列)的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5296162/

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