Учитывая набор данных, как это;
+-----+---------------------+--------+
| 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;
Это, очевидно, не очень хороший способ решить большую проблему. Я мог бы просто написать цикл, но я бы хотел уменьшить количество запросов.