mysql 选择,求和,平均每天-多个值从同一个表-可以做到这一点?

pjngdqdw  于 2023-04-29  发布在  Mysql
关注(0)|答案(1)|浏览(111)

我有一个table收集临时工等。对于我的妻子(农民),现在我们开始有一些数据在表中,这将是很好的得到一个图表在这方面。
表格结构
id、时间戳(YYYY-MM-DD HH:MM:SS)、temp_c、feelslike_c、湿度、PM10、gbdefraindex
我们收集数据分钟。1次/小时,我需要帮助来总结这平均值为每一天,我可以把它每天,并把它放在一个新的表,但必须有一些很好的SQL Q得到数据从“主表”一次?
temp_c,feelslike_c,humidity,PM10,gbdefraindex是我需要的值,是否可以在一个Q中完成,或者我应该为每个写一个?
对于我们这个地区来说,明年能给村里的PM10值就很好了,这样他们就不会在田地里燃烧那么多了:)。
我什么都没做,因为我不知道该怎么开始思考。如果它是一个值,那么它对我来说是可以的,但现在它有5个值要处理。

fnvucqvd

fnvucqvd1#

如果我理解你的问题,也许这会有所帮助:

CREATE TABLE your_table (
  id INT NOT NULL AUTO_INCREMENT,
  timestamp DATETIME NOT NULL,
  temp_c FLOAT NOT NULL,
  feelslike_c FLOAT NOT NULL,
  humidity FLOAT NOT NULL,
  PM10 FLOAT NOT NULL,
  gbdefraindex FLOAT NOT NULL,
  PRIMARY KEY (id)
);
INSERT INTO your_table (timestamp, temp_c, feelslike_c, humidity, PM10, gbdefraindex)
VALUES ('2023-04-20 12:00:00', 20.5, 21.2, 60.3, 15.2, 2.5),
       ('2023-04-20 13:00:00', 21.2, 22.1, 58.7, 16.5, 3.1),
       ('2023-04-21 12:00:00', 19.8, 20.5, 62.1, 14.8, 2.1),
       ('2023-04-21 13:00:00', 20.1, 21.0, 61.5, 15.1, 2.3);
Records: 4  Duplicates: 0  Warnings: 0
SELECT DATE(timestamp) AS date,
       ROUND(AVG(temp_c),2) AS avg_temp_c,
       ROUND(AVG(feelslike_c),2) AS avg_feelslike_c,
       ROUND(AVG(humidity),2) AS avg_humidity,
       ROUND(AVG(PM10),2) AS avg_PM10,
       ROUND(AVG(gbdefraindex),2) AS avg_gbdefraindex
FROM your_table
GROUP BY DATE(timestamp);
日期平均温度c平均感觉c平均湿度平均PM10avg_gbdefraindex
2023-04-20 2023-04-20 2023-04-2020.85二十一点六十五分五十九点五十五块八毛五2.8
2023-04-21 2023-04-21 2023-04-21十九点九五分二十块七十五六十一点八十四点九五2.2

fiddle

  1. DATE函数应用于timestamp列,该列仅提取时间戳的日期部分。这将创建一个名为date的新列。
  2. AVG函数用于计算温度、感觉温度、湿度、PM10和gbdefraindex的平均值(对于每个“组”,这里是一天)。
  3. ROUND函数用于将平均值四舍五入到两位小数。
    1.使用GROUP BY子句按日期列对结果进行分组(使每个日期都是一行)。
    结果显示每天指定列的平均值。

相关问题