MySQL如何将多组数据和列连接到Single表中

时间:2015-07-01 15:18:34

标签: mysql

  
    

我无法理解我希望执行的查询的结构。我所拥有的是具有多个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

1 个答案:

答案 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的列表。