Я застрял с логикой, может быть, я делаю это неправильно SQL - PullRequest
0 голосов
/ 17 апреля 2019

Мой запрос, который я пробовал до сих пор

select sum(g1.datacount) from
(select DAte(DATE) as 'newdate', COUNT(RIDE_ID) as 'datacount' from 
ride_Data
where date(date) between (now() - interval 90 day) and now()
group by date(date)
order by date(date) desc) as g1
where g1.newdate between (now() - interval 7 day) and now()

короткая версия вышеприведенного запроса только для пояснения.

select sum(g1.datacount) from g1
where g1.newdate between (now() - interval 7 day) and now()

Чего я хочу достичь Я хочу подвести итоги за последние 7 дней для столбца данных, как вы можете видеть, что я выполнил эту часть правильно, сейчас возникли проблемы, но в реальном сценарии я хочу суммировать последние 90 дней в группе из 7 дней Я не знаю, как сгруппировать это таким образом?

Есть ли что-то, что я могу сгруппировать по последним 7 результатам записи

1 Ответ

1 голос
/ 18 апреля 2019

Если вы хотите сравнить с текущим временем, вы можете использовать DATEDIFF с DIV 7 для группировки.

SELECT ((DATEDIFF(t.newdate, NOW())) DIV 7) AS WeekDiff,
-- MIN(t.newdate) AS MinDate,
-- MAX(t.newdate) AS MaxDate,
 COUNT(t.RIDE_ID) as TotalRides
FROM ride_Data t
WHERE t.newdate BETWEEN (NOW() - interval 90 day) AND NOW()
GROUP BY WeekDiff
ORDER BY WeekDiff DESC;

Или, может быть, просто группировать на неделю .

SELECT YEAR(t.newdate)*100+WEEK(t.newdate, 3) AS WeekNr,
COUNT(t.RIDE_ID) as TotalRides
FROM ride_Data t
WHERE t.newdate BETWEEN (NOW() - interval 90 day) AND NOW()
GROUP BY WeekNr
ORDER BY WeekNr DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...