2016-06-23 5 views
0

Я пытаюсь получить объем данных за последние 30 дней.Как уменьшить SQL-запрос за последние 30 дней?

SELECT (Now() - interval 1 month), 
    Count(flightid) AS count 
FROM flight 
WHERE flightstatus = 0 
    AND flightvisibility = 1 
    AND flightvaliddate > Now() 
    AND flightvaliddate >= (Now() - interval 1 month) 

Сейчас это работает нормально, и это дает мне только 1 строку, которая соответствует тому же дню прошлого месяца.

Я хотел бы получить оставшиеся данные с каждого дня до настоящего времени. Как я могу это сделать?

Я использую MySQL.

+0

С какой версией SQL вы работаете? Вы получите разные ответы на разные системы. –

+0

@RichBenner Я использую MySQL. Отредактирован вопрос –

+0

Вы получите данные только в том случае, если 'flightValidate' больше, чем' now' из-за этого условия 'AND flightvalidate> Now() И flightvaliddate> = (Now() - interval 1 month)'. Btw, является 'flightvalidate' типа данных timestamp? – 1000111

ответ

0

Условие в статье WHERE неверно.

А поскольку вам нужны данные дня за последние тридцать дней до настоящего времени, вам необходимо использовать GROUP BY.

SELECT 
    DATE(flightvalidate) AS flightValidateDate, 
    Count(flightid) AS count 
FROM 
    flight 
WHERE 
    flightstatus = 0 
    AND flightvisibility = 1 
    AND DATE(flightvaliddate) >= CURDATE() - INTERVAL 1 MONTH 
GROUP BY flightValidateDate 
ORDER BY flightvalidate 
+1

Работая хорошо для меня, спасибо! –

Смежные вопросы