覆盖 SELECT 上的记录

问题描述 投票:0回答:1

我正在尝试创建一个 SQLite 查询,以获取过去 24 小时内表中的所有数据,并且我正在尝试根据日期和时间覆盖这些值(例如,如果 18 日 00 点,我们有值 1,在 19 日 00 点,我们有值 25 应该显示 19 日 00 点值,然后是 18 日的其余部分(如果 19 日凌晨 1 点到第二天 00 点没有更多记录)。我要留下打印信息我的输出和已有的查询。代码可以是 SQL 格式,然后我可以对 SQLite 进行更改

查询

SELECT *
FROM teste
WHERE strftime('%Y-%m-%d %H:%M:%S', dt, '+9 hours') >= strftime('%Y-%m-%d %H:%M:%S', 'now', '-1 day', 'start of day');

输出

OUTPUT OF THE QUERY

我也会留下表格的打印件,这样您就可以得到我现在拥有的内容的正确示例。

TABLE CONTENT

我尝试了 ChatGPT 试图给我的很多查询,以便我可以获得所需的输出,但没有成功,我希望看到顶部的 19 号 00h 的值,然后在其下方显示 18 号的凌晨 1 点到晚上 11 点,而不是要么我得到了从 18 日 00 点到上午 8 点的值,或者直到下午 2 点,或者只是没有返回任何查询

sql sqlite
1个回答
0
投票

我找到了一个可以解决我的问题的查询,我将其留在这里

WITH HourlyData AS (
  SELECT 
    strftime('%Y-%m-%d %H:00:00', dt) as hour_start,
    MAX(column_name) as max_value,
    MIN(column_name) as min_value
  FROM table_name
  WHERE dt >= datetime('now', '-24 hours')
  GROUP BY strftime('%Y-%m-%d %H', dt)
)
SELECT 
  hour_start,
  max_value,
  min_value,
  max_value - min_value as diff_last_first
FROM HourlyData
ORDER BY hour_start ASC;
© www.soinside.com 2019 - 2024. All rights reserved.