SELECT
DATE(DTM) AS 'Dia',
ROUND(AVG(TMP)-10) AS 'Graus Dia',
(SELECT
ROUND(AVG(TMP),1)
FROM dados_meteo
WHERE HOUR(DTM)>=18 AND HOUR(DTM)<=22 AND DATE(DTM)=Dia/* AND POM = '[VARIABLE]'*/) AS 'Temp. Crepuscular'
FROM dados_meteo
/*WHERE POM = '[VARIABLE]'*/
GROUP BY DATE(DTM)
The structure of the table is:
POM Varchar
DTM datetime
RNF double
WET double
HMD double
TMP double
DEW double
INF int
And the output of explain select...
is:
1 PRIMARY dados_meteo ALL NULL NULL NULL NULL 18684 Using where; Using temporary; Using filesort
2 DEPENDENT SUBQUERY dados_meteo ALL NULL NULL NULL NULL 18684 Using where
Split dtm
up in a date and time part.
datem date
timem time
SELECT
datem AS 'Dia'
,ROUND(AVG(TMP)-10) AS 'Graus Dia'
,(SELECT ROUND(AVG(TMP),1)
FROM dados_meteo
WHERE timem BETWEEN maketime(18,0,0) AND maketime(22,0,0)
AND datem = Dia) AS 'Temp. Crepuscular'
FROM dados_meteo
GROUP BY datem
Make sure you use an index on timem
and datem
At least create an index for DTM
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.