Добрый день. Пишу SQL запрос, но не могу понять как реализовать. Есть некая база, в которой записаны ip, время и количество скачанной информации, выглядит примерно так:
217.182.132.29 17:12:34 22372
217.182.132.29 17:13:34 22372
217.182.132.29 17:17:34 22372
217.182.132.29 18:12:34 22372
217.182.132.29 18:15:34 22372
217.182.132.29 18:17:34 22372
Для этого всего я написал такой запрос, который склеивает все одинаковые ip и при этом суммирует количество скачанной информации
SELECT Ip, SUM(Download) as Download
FROM requests
GROUP BY Ip
ORDER BY Download DESC LIMIT 0, 500
При этом мне надо, чтобы он суммировал количество скачанной информации в период 20 минут, т.е. должны просуммироваться первые 3 записи и последние 3 записи и на вывод получиться так
217.182.132.29 67116
217.182.132.29 67116
Пробовал разными способами, но результат один - склеивает ip, но при этом суммирует или не суммирует данные и на выводе получается так
217.182.132.29 134232
или так
217.182.132.29 22372
Вот мои попытки все это сделать, которые не увенчались успехом
SELECT Ip, SUM(Download) as Download
FROM requests
WHERE Time >= SUBDATE(Time, INTERVAL 20 MINUTE)
GROUP BY Ip
ORDER BY Download DESC LIMIT 0, 500
SELECT Ip, if(Time >= SUBDATE(Time, INTERVAL 20 MINUTE), SUM(Download), Download) as Download
FROM requests
GROUP BY Ip
ORDER BY Download DESC LIMIT 0, 500
SELECT Ip, SUM(Download) as Download
FROM requests
WHERE Time BETWEEN Time AND ADDDATE(Time, INTERVAL 20 MINUTE)
GROUP BY Ip
ORDER BY Download DESC LIMIT 0, 500
База большая, поэтому и использую LIMIT 0, 500
Предложенный вариант ответа на вопрос не решает проблему, т.к. он вносит в одну группу записи несмотря на ip пользователя, а суть в том, что этот ip может быть не следующим, а вообще через 100 строк. Данное решение просто склеит 100 тысяч строк в одну
Сборка персонального компьютера от Artline: умный выбор для современных пользователей