Представьте таблицу SQL votes
с двумя столбцами vote
и time
; vote
- это строка, time
- это временная метка. Я хотел бы получить «совокупный счет» из таблицы. Таким образом, таблица выглядит следующим образом:Совокупный счет (*) в MySQL
vote | time
-----------+----------------
stuart | 1443000000
stuart | 1443000000
bryan | 1443000000
stuart | 1443000001
bryan | 1443000001
bryan | 1443000002
bryan | 1443000002
так, «Stuart» получает два голоса в первом временном интервале и «Bryan» получает один; они получают по одному во втором интервале, и Bryan получает еще два в третьей, и, таким образом, выходные результаты я хотел бы следующие:
vote | time | cumulative total
-----------+--------------+-----------------
stuart | 1443000000 | 2
bryan | 1443000000 | 1
stuart | 1443000001 | 3
bryan | 1443000001 | 2
stuart | 1443000002 | 3
bryan | 1443000002 | 4
Я не знаю, как это сделать. Очевидно, что количество голосов, полученных за каждый промежуток времени, тривиально (SELECT vote, time, COUNT(*) from table GROUP BY time, vote ORDER BY time, vote
), но сделать совокупный счет кажется сложнее. Есть ли способ сделать это?
(я использую MySQL, и я рад использовать MySQL-специфические функции здесь, если полезно.)
Использование коррелированного подзапроса для подсчета? – jarlh