gpt4 book ai didi

sql - 获得每小时平均值

转载 作者:行者123 更新时间:2023-12-04 21:55:50 25 4
gpt4 key购买 nike

我对编码相当陌生,希望能得到所有帮助。我试图从我的交易表中获取每小时的金额值。它在不同时间收集数据。我想获得每个收银员 ID 的每小时平均值,输出显示小时的开始。此外,我的表相当大,所以我试图只获得特定日期之间的每小时平均值。这是我的表的片段:

         November Transactions      
Cash_ID Trans_Time Amount
1 11/01/16 12:00:00PM 5.08
1 11/01/16 12:03:00PM 8.98
2 11/01/16 12:05:00PM 38.53
3 11/01/16 12:41:00PM 12.91
1 11/01/16 12:11:00PM 14.55
3 11/01/16 01:00:00PM 17.74
2 11/01/16 12:45:00PM 21.33
3 11/01/16 01:07:00PM 33.51
2 11/01/16 12:15:00PM 15.86

这就是我正在努力实现的目标。
    November Transactions       
Cash_ID Trans_Time Amount
1 11/01/16 12:00:00PM 9.54
2 11/01/16 12:00:00PM 25.24
3 11/01/16 12:00:00PM 12.91
3 11/01/16 01:00:00PM 25.63

我想出了如何按小时过滤 trans_time,但在计算平均值时遇到了困难。目前我有
SELECT Cash_ID, Trans_Time, Amount
FROM November Transactions
WHERE Trans_Time between to_date('2016/11/01', 'yyyy/mm/dd hh:mi:ss')AND to_date('2016/11/02', 'yyyy/mm/dd hh:mi:ss')
AND Trans_Time in
(Select Trans_Time From November Transactions
where Trans_Time = Trunc(Trans_Time,'hh'))

我查看了与我类似的其他问题,但它们都只使用计数函数来计算小时值。我在 select 语句中尝试使用 AVG(Amount) 代替 Amount,但出现“不是单组组函数”错误。我在想也许是另一个内部选择,但无法弄清楚条件是什么。如果它也错了,请纠正我到目前为止所拥有的。谢谢。

最佳答案

我认为你在正确的轨道上。您只需要正确的聚合和对逻辑的一些其他修复:

SELECT Cash_ID, trunc(Trans_Time, 'hh'), AVG(Amount)
FROM November_Transactions
WHERE Trans_Time >= date '2016-11-01' and
Trans_Time < date '2016-11-02'
GROUP BY Cash_ID, trunc(Trans_Time, 'hh')
ORDER BY Cash_ID, trunc(Trans_Time, 'hh');

注意:我更改了 between 的逻辑,因为我不想包括一天中午夜的时间。

关于sql - 获得每小时平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41455656/

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