gpt4 book ai didi

oracle - 如何在 DATETIME 范围内使用 “group by”?

转载 作者:行者123 更新时间:2023-12-02 00:36:47 24 4
gpt4 key购买 nike

我正在尝试建立一个基于日期时间范围的交易报告,适用于可以在两天内营业的企业,具体取决于轮类管理。

用户可以选择一个日期时间范围(每月、每天、每周、自由......),我实现的查询获取 startDateTime 和 EndDateTime,并将返回按天分组的所有交易总数。

即.

DateTime       Total Sales
---------------------------
10/15/2010 $2,300.38
10/16/2010 $1,780.00
10/17/2010 $4,200.22
10/20/2010 $900.66

我的问题是,如果设置了业务的类次,例如,从凌晨 5 点到第二天凌晨 02 点,那么从午夜到凌晨 02 点完成的所有交易将在第二天分组......和依此类推...总数已损坏。当一个企业有这样的转变时,它想要一个基于该转变的报告,但如果没有代码修补(我正在使用 Java 调用 Oracle native 查询),我无法获得请求的报告。

我想知道是否有一些聪明的方法可以仅使用 Oracle 按日期时间范围对这些事务集进行分组。

下面是针对 7 月份的查询:

SELECT Q1.dateFormat, NVL(Q1.sales, 0) 
FROM (
SELECT to_date(to_char(tx.datetimeGMT +1/24 , 'mm-dd-yyyy'), 'mm-dd-yyyy') AS dateFormat
, NVL(SUM(tx.amount),0) AS sales
FROM Transaction tx
WHERE tx.datetimeGMT > to_date('20100801 08:59:59', 'yyyymmdd hh24:mi:ss') +1/24
AND tx.datetimeGMT < to_date('20100901 09:00:00', 'yyyymmdd hh24:mi:ss') + 1/24
GROUP BY to_date(to_char(tx.datetimeGMT +1/24 , 'mm-dd-yyyy'), 'mm-dd-yyyy')
) Q1
ORDER BY 1 DESC

最佳答案

谢谢大家的回答,通过查看它们我可以写下我正在搜索的查询:

SELECT CASE 
WHEN EXTRACT(HOUR FROM TX.DATETIME) >= 5 THEN TO_CHAR(TX.DATETIME,'DD-MM-YYYY')
WHEN EXTRACT(HOUR FROM TX.DATETIME) BETWEEN 0 AND 2 THEN TO_CHAR(TX.DATETIME-1,'DD-MM-YYYY')
WHEN EXTRACT(hour from tx.datetime) between 2 and 5 THEN to_char(TX.DATETIME-1,'DD-MM-YYYY')
END AS age,
NVL(SUM(tx.amount),0) AS sales
FROM TRANSACTION TX
WHERE tx.datetime > to_date('20100801 08:59:59', 'yyyymmdd hh24:mi:ss')
AND TX.DATETIME < TO_DATE('20100901 09:00:00', 'yyyymmdd hh24:mi:ss')
GROUP BY CASE
WHEN EXTRACT(HOUR FROM TX.DATETIME) >= 5 THEN TO_CHAR(TX.DATETIME,'DD-MM-YYYY')
WHEN EXTRACT(HOUR FROM TX.DATETIME) BETWEEN 0 AND 2 THEN TO_CHAR(TX.DATETIME-1,'DD-MM-YYYY')
WHEN EXTRACT(hour from tx.datetime) between 2 and 5 THEN to_char(TX.DATETIME-1,'DD-MM-YYYY')
END
ORDER BY 1

关于oracle - 如何在 DATETIME 范围内使用 “group by”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4286216/

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