在postgresql中查找每天每小时每行的列数据之和

在postgresql中查找每天每小时每行的列数据之和,sql,postgresql,aggregation,Sql,Postgresql,Aggregation,我对PostgreSQL非常陌生。最近我正在开发一个数据库,其中有一个表名存储。存储区将项目id作为主键。以下是“我的商店”表中的演示数据: 身份证件 项目编号 供应商id 收到 量 12 34 6. 2019-3-21 11:55:23 54 99 42 4. 2019-3-21 11:23:12 98 19 39 6. 2019-3-21 12:59:23 21 69 82 3. 2019-3-21 10:29:11 32 您可以在这里使用日历表方法。假设我们只需要在2019-03-21单一

我对PostgreSQL非常陌生。最近我正在开发一个数据库,其中有一个表名存储。存储区将项目id作为主键。以下是“我的商店”表中的演示数据:

身份证件 项目编号 供应商id 收到 量 12 34 6. 2019-3-21 11:55:23 54 99 42 4. 2019-3-21 11:23:12 98 19 39 6. 2019-3-21 12:59:23 21 69 82 3. 2019-3-21 10:29:11 32
您可以在这里使用日历表方法。假设我们只需要在2019-03-21单一日期覆盖24小时,我们可以尝试:

日期为 选择generate_系列 日期“2019-03-21”::时间戳, 日期“2019-03-22”::时间戳, 间隔“1小时” as dt 选择 d、 日期:文本| |”|| to|chard.dt::time,'HH24:MM:SS'| |'-'|| to_chard.dt::时间+间隔“1小时”-间隔“1秒”,“HH24:MM:SS”为小时, 合并数量,0作为供应 从日期d开始 左连接存储 在s.received>=d.dt和s.received 数量大于0的总和
非常感谢。但是如果有多个日期而不是一天呢?我希望每天每小时。@RayhanAhmedRakib然后编辑调用以生成_系列,从最早的日期开始,到您希望报告的最晚日期结束。您的解决方案只工作到12:00,但忽略13:00、14:00、15:00等的供应。我不同意。我的解决方案完全适用于您显示的示例数据。如果您有其他数据,那么可能有一些我看不到的边缘情况。@RayhanAhmedRakib不确定这是否重要,但我编辑了我的答案以显示24小时时间中的小时数。我想我的答案是抓住了总数,但在下午2:00以下的14:00会出现偏差。