【问题标题】:MySQL Select Average weekly data from 6:00 p.m. to 8:00 a.mMySQL 选择从下午 6:00 开始的平均每周数据。到上午 8:00
【发布时间】:2022-01-04 11:25:28
【问题描述】:
SELECT temperature
FROM Temp_data
WHERE reading_time >= '$date' - INTERVAL 6 HOUR
  AND reading_time <= '$date' + INTERVAL 8 HOUR
temperature reading_time
25.6 2022-01-03 18:03:05
24.9 2022-01-03 18:13:05
25.3 2022-01-03 18:23:05
... ...
29.6 2022-01-04 07:53:05

此数据仅适用于一天。如果要获取每天 18:00 - 8:00 之间的平均温度数据,并以该月的一周的形式对其进行平均。我如何查询数据以获取它?

(预期)

Average temperature week_start_date
25.4 2021-12-01
25.5 2021-12-05
26.3 2021-12-12
26.4 2021-12-19
26.1 2021-12-26

【问题讨论】:

  • 您使用的是哪个 dbms? (在日期/时间方面,许多产品远不符合 ANSI SQL。)
  • 提示:GROUP BY, AVG()。
  • 您还必须更明确地说明平均值的含义:您是指数据集中温度值的平均值,还是平均值温度 尽可能根据数据集中的值给出。
  • 不知道怎么解释。我只是不想要每天所有平均温度的平均值。我想要夜间(下午 6:00 -上午 8:00)整周的平均温度。
  • 我尝试了 avg() 和 group by(),但在当天晚上和第二天早上之间的时间段内它不起作用

标签: php mysql sql


【解决方案1】:
SELECT 
    AVG(b.temperature) AS 'Average temperature',
    DATE(b.reading_time) AS 'week_start_date'
FROM (
    SELECT a.temperature, a.reading_time
    FROM temp_data a
    WHERE TIME(a.reading_time) > '18:00:00' OR TIME(a.reading_time) < '08:00:00'    
) b
GROUP BY DATE_FORMAT(b.reading_time, '%u')

结果(带有随机温度数据):

【讨论】:

  • 非常感谢您的回答。我明白了!!
  • @rockstarmeekice 谢谢你接受我的回答,你也可以点赞
猜你喜欢
  • 2021-12-09
  • 1970-01-01
  • 2014-10-14
  • 2013-02-28
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
相关资源
最近更新 更多