首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >红班:一天中每小时加一行

红班:一天中每小时加一行
EN

Stack Overflow用户
提问于 2022-04-25 08:14:09
回答 2查看 94关注 0票数 -2

我有一张包含不同日期时间的item_wise数量的桌子。尝试添加每小时的数据(一天中有24个肠类),并提供前一个小时的可用数量。例如,对于小时(2-10),它将是5。

  1. I创建了一个包含小时肠(1-24)的表&与共享表完全连接.

如何添加以前可用的条目。需要建议

代码语言:javascript
复制
item_id| date       | hour| quantity
101    | 2022-04-25 | 2   | 5
101    | 2022-04-25 | 10  | 13
101    | 2022-04-25 | 18  | 67
101    | 2022-04-25 | 23  | 27
EN

回答 2

Stack Overflow用户

发布于 2022-04-25 08:46:02

您可以尝试使用generate_series生成小时数,让它成为OUTER JOIN基表,

然后使用关联子查询获取expect quantity列。

代码语言:javascript
复制
SELECT t1.*,
       (SELECT quantity 
        FROM T tt 
        WHERE t1.item_id = tt.item_id 
        AND t1.date = tt.date 
        AND t1.hour >= tt.hour
        ORDER BY tt.hour desc
        LIMIT 1) quantity
FROM (
    SELECT DISTINCT item_id,date,v.hour
    FROM generate_series(1,24) v(hour)
    CROSS JOIN T
) t1
ORDER BY  t1.hour
票数 0
EN

Stack Overflow用户

发布于 2022-04-25 08:51:19

提供了int 1的表格。24是all24(hour)你可以使用leadjoin

代码语言:javascript
复制
select t.item_id, t.date, all24.hour, t.quantity
from all24
join ( 
     select *,
        lead(hour, 1, 25) over(partition by item_id, date order by hour) - 1 nxt_h
     from tbl
) t on all24.hour between t.hour and t.nxt_h
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71996406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档