У меня есть стол с 3 колонками (server varchar(20)
, transactions int(20)
, timestamp timestamp(0)
). Есть несколько серверов, которые регистрируют транзакции, с которыми они попадают, в течение дня. Я хочу написать запрос, который суммирует максимальную транзакцию (в день) в течение нескольких месяцев и отображает столбец за каждый месяц.Возьмите максимум каждого дня и сумму mysql
Я считаю, что я близок со следующим сломанным запросом, но проблема в том, что он берет максимальное значение всего месяца, а не получает сумму максимума каждого дня в месяце.
SELECT IFNULL(server, 'TOTAL') AS Server,
FORMAT(SUM(MAX(CASE WHEN DATE(TIMESTAMP) >= DATE('2014-10-01')
AND DATE(TIMESTAMP) < DATE('2014-11-01') THEN transactions ELSE 0 END),0)) AS 'Oct - 2014',
FORMAT(SUM(MAX(CASE WHEN DATE(TIMESTAMP) >= DATE('2014-11-01')
AND DATE(TIMESTAMP) < DATE('2014-12-01') THEN transactions ELSE 0 END),0)) AS 'Nov - 2014',
FORMAT(SUM(MAX(CASE WHEN DATE(TIMESTAMP) >= DATE('2014-12-01')
AND DATE(TIMESTAMP) < DATE('2015-01-01') THEN transactions ELSE 0 END),0)) AS 'Dec - 2014',
'' AS 'Total'
FROM transactionstable
GROUP BY Server WITH ROLLUP;
Спасибо за быстрый ответ. Я хочу иметь отдельную колонку за каждый месяц, чтобы показать сумму (макс.), Например, последние 3 месяца. В вашем ответе будет отображаться только сумма (макс.) Для одного конкретного диапазона? –
@ttran. , , Его можно легко адаптировать, чтобы иметь несколько столбцов, если хотите. –
Это сработало! Я скептически относился к тому, что получал максимум каждого дня в течение месяца и суммировал его для каждого сервера. Большое спасибо за ваше время. –