2014-07-19 30 views
0

寻找此查询的一种方法,用于显示当天在相邻列的同一行中最高温度发生的实际DATETIME 。相邻列中同一行中的MIN MAX的每日DATETIME

我一直在寻找并尝试一些事情,但我有点迷失了连接,我认为你需要为此使用它。

当前查询和结果..

SELECT 
    YEAR(tstLocal) AS "YEAR", 
    MONTHNAME(tstLocal) AS "MONTH", 
    DAY(tstLocal) AS "DAY", 
    min(tempC) AS "DAILY MIN TEMP", 
    max(tempC) AS "DAILY MAX TEMP", 
    ROUND(AVG(tempC),1) AS "DAILY AVG TEMP" 
FROM 
    house.outside1 
WHERE 
    YEAR(tstLocal) = '2014' AND MONTH(tstLocal) = '7' 
GROUP BY 
    YEAR(tstLocal), 
    MONTH(tstLocal), 
    DAY(tstLocal); 

RESULTS

什么我需要做的是,这些最小/最大温度发生在DATETIME显示呢?

+0

你为什么要分手了日期时间(到年,月,日),而不是用它直接在查询? – serakfalcon

回答

2

因为你已经使用了group by,该group_concat()/substring_index()伎俩将工作:

SELECT YEAR(tstLocal) AS "YEAR", MONTHNAME(tstLocal) AS "MONTH", DAY(tstLocal) AS "DAY", 
     min(tempC) AS "DAILY MIN TEMP", max(tempC) AS "DAILY MAX TEMP", 
     ROUND(AVG(tempC),1) AS "DAILY AVG TEMP", 
     substring_index(group_concat(tstlocal order by tempC asc), ',', 1) as min_datetime, 
     substring_index(group_concat(tstlocal order by tempC desc), ',', 1) as max_datetime 
FROM house.outside1 
WHERE YEAR(tstLocal) = '2014' AND MONTH(tstLocal) = '7' 
GROUP BY YEAR(tstLocal), MONTH(tstLocal), DAY(tstLocal); 
+0

非常好,+1。就像在旧时代没有使用子选词:-) – VMai

+0

美丽,非常好。 Thx。 –

相关问题