如果我理解正确的(请描述exacly你想要查询),您可以通过将INNER JOIN
更改为LEFT JOIN
来获得所需内容。
或本:
SELECT
DATE(dia.DTM) AS 'Dia',
SUM(dia.TMP BETWEEN 20 AND 30) AS 'Index'
FROM dados_meteo dia
WHERE dia.POM = 'Alcobaca'
GROUP BY DATE(dia.DTM)
什么上面的查询实际上做的是这样的:
SELECT
DATE(dia.DTM) AS 'Dia',
COUNT(CASE WHEN dia.TMP BETWEEN 20 AND 30
THEN 'yes'
ELSE NULL
END)
AS 'Index'
FROM dados_meteo dia
WHERE dia.POM = 'Alcobaca'
GROUP BY DATE(dia.DTM)
的意见后,这里有一个轻微的修改:
SELECT
DATE(dia.DTM) AS 'Dia',
CASE WHEN SUM(dia.TMP BETWEEN 20 AND 30) >= 24
THEN 20
ELSE -10
END AS 'Index'
FROM dados_meteo dia
WHERE dia.POM = 'Alcobaca'
GROUP BY DATE(dia.DTM)
你为什么加入dados_meteo到自己? – Olaf 2011-06-11 16:53:57
我必须保证,即使当天只有温度波动20,我有一个计数= 0 – Hugo 2011-06-11 16:59:25