我无法理解我希望执行的查询的结构。我所拥有的是具有多个UnitID的表中的大量数据。当温度记录时,单位的温度和时间戳。
我希望能够显示数据,我可以看到每周间隔的每个单位的平均温度。
对于我以前的帖子道歉,我仍然是一个查询的新手。但我会告诉你到目前为止我做了什么。
SELECT UnitID AS 'Truck ID',
AVG(Temp) As 'AVG Temp',
LogTime AS 'Event Time',
DAY(g.`LogTime`) as 'Day',
MONTH(g.`LogTime`) as 'Month',
COUNT(*) AS 'Count'
FROM `temperature` as g
WHERE DATE_SUB(g.`LogTime`,INTERVAL 1 WEEK)
AND Ana > 13 AND Ana < 16 AND NOT g.Temp = -100
GROUP BY 'truck id', YEAR(g.`LogTime`),MONTH(g.`LogTime`),WEEK(g.`LogTime`)
Order BY 'truck id', YEAR(g.`LogTime`),MONTH(g.`LogTime`),WEEK(g.`LogTime`)
;
(抱歉,我现在不知道如何显示表格结果)
这个结果给出了卡车的每周平均温度,并显示了每月记录温度的当天,以及每辆卡车每周的温度计数。
我要执行的查询,创建5列,分别是UnitID,Week1,Week2,Week3,Week4。
在“周”列中,我希望能够显示每辆卡车的每周(每周的每一天)温度平均值,其中下一周设置在前一周之后的一周(即,将Week2设置为显示平均值(温度)从第1周开始一周)。
这就是我坚持如何创建查询的结构。我不确定是否需要创建子查询或使用Union子句。我尝试了几个查询,但我删除了它们,因为它们不起作用。我不确定这个查询是否太复杂或者是否可能。
如果有人能够帮助我会非常感激。如果有任何其他信息我可以提供帮助,我会尝试这样做。
希望这是可以解决的。 :p
答案 0 :(得分:0)
MySQL有一个WEEK
函数,它将以一个整数(0-52)返回一年中的一周。您可以在GROUP BY
子句中使用它,然后使用AVG
聚合函数来获取平均温度。您的查询看起来像这样:
SELECT unitID, WEEK(dateColumn) AS week, AVG(tempColumn) AS averageTemperature
FROM myTable
GROUP BY unitID, WEEK(dateColumn);
以下是可用于查询数据库的其他有用Date and Time Functions的列表。