Учитывая набор данных, подобный этому;GROUP BY ID диапазон?
+-----+---------------------+--------+
| id | date | result |
+-----+---------------------+--------+
| 121 | 2009-07-11 13:23:24 | -1 |
| 122 | 2009-07-11 13:23:24 | -1 |
| 123 | 2009-07-11 13:23:24 | -1 |
| 124 | 2009-07-11 13:23:24 | -1 |
| 125 | 2009-07-11 13:23:24 | -1 |
| 126 | 2009-07-11 13:23:24 | -1 |
| 127 | 2009-07-11 13:23:24 | -1 |
| 128 | 2009-07-11 13:23:24 | -1 |
| 129 | 2009-07-11 13:23:24 | -1 |
| 130 | 2009-07-11 13:23:24 | -1 |
| 131 | 2009-07-11 13:23:24 | -1 |
| 132 | 2009-07-11 13:23:24 | -1 |
| 133 | 2009-07-11 13:23:24 | -1 |
| 134 | 2009-07-11 13:23:24 | -1 |
| 135 | 2009-07-11 13:23:24 | -1 |
| 136 | 2009-07-11 13:23:24 | -1 |
| 137 | 2009-07-11 13:23:24 | -1 |
| 138 | 2009-07-11 13:23:24 | 1 |
| 139 | 2009-07-11 13:23:24 | 0 |
| 140 | 2009-07-11 13:23:24 | -1 |
+-----+---------------------+--------+
Как бы я мог группировать результаты по 5-дневным записям за один раз. Вышеприведенные результаты являются частью живых данных, в таблице содержится более 100 000 строк результатов и их рост. В принципе, я хочу измерить изменение с течением времени, поэтому хочу взять СУММУ результата каждые X записей. В реальных данных я буду делать это когда-либо 100 или 1000, но для данных выше, возможно, каждые 5.
Если бы я мог сортировать по дате, я бы сделал что-то вроде этого;
SELECT
DATE_FORMAT(date, '%h%i') ym,
COUNT(result) 'Total Games',
SUM(result) as 'Score'
FROM nn_log
GROUP BY ym;
Я не могу найти способ сделать что-то подобное с числами. Порядок сортируется по дате, но я надеюсь разбить данные на каждый x результатов. Можно с уверенностью предположить, что нет пустых строк.
Выполнение этого выше с данными, которые вы могли бы сделать несколькими выборами;
SELECT SUM(result) FROM table LIMIT 0,5;
SELECT SUM(result) FROM table LIMIT 5,5;
SELECT SUM(result) FROM table LIMIT 10,5;
Это явно не очень хороший способ масштабирования до более крупной проблемы. Я мог бы просто написать цикл, но я хотел бы уменьшить количество запросов.
Прекрасное спасибо. Интересно, что это дало мне только 999 для первого ... но я могу жить с этим. MySQL> SELECT -> этаж (ID/1000) мкм, -> COUNT (результат) 'Всего игр, -> SUM (результат) как 'Счет' -> ОТ nn_log -> GROUP BY YM ; + ------ + ------------- + ------- + | ym | Всего игр | Оценка | + ------ + ------------- + ------- + | 0 | 999 | -879 | | 1 | 1000 | -889 | | 2 | 1000 | -920 | | 3 | 1000 | -903 | .... –
d oh - форматирование сбоя lol –