MySQL выбрать сумму группы по дате - PullRequest
37 голосов
/ 02 июня 2009

Быстрый вопрос, у меня есть следующая таблица

+-------------+---------------------+
| total       | o_date              |
+-------------+---------------------+
|          35 | 01-11-2009 19:32:44 | 
|        41.5 | 01-12-2009 22:33:49 | 
|        61.5 | 01-23-2009 22:08:24 | 
|          66 | 02-01-2009 22:33:57 | 
|       22.22 | 02-01-2009 22:37:34 | 
|       29.84 | 04-20-2009 15:23:49 | 
+-------------+---------------------+

Я бы хотел сложить итоги за каждый месяц и сгруппировать итоги по месяцам. Так, например, Январь -> 138 февраля -> 88,2 апреля -> 29,84

Любые подсказки об этом. Спасибо

Ответы [ 8 ]

70 голосов
/ 02 июня 2009

Это решение даст вам название месяца в виде столбца вашего набора результатов, а затем, при необходимости, итоговую сумму.

SELECT MONTHNAME(o_date), SUM(total) 
FROM theTable
GROUP BY YEAR(o_date), MONTH(o_date)
7 голосов
/ 02 июня 2009
select year(o_date), month(o_date), sum(total)
from table
group by year(o_date), month(o_date);
3 голосов
/ 30 марта 2015

Получение данных за месяц и год из базы данных MySQL:

SELECT MONTHNAME(o_date), YEAR(o_date), SUM(total) 
FROM the_table 
GROUP BY YEAR(date), MONTH(date)
3 голосов
/ 02 июня 2009

Как я помню из прошлой жизни MySQL, запрос типа

SELECT LEFT(o_date, 7) month, SUM(total) FROM TABLE group BY month

использует индекс в поле o_date (что, к сожалению, я бы не гарантировал для YEAR() и MONTH()).

Вы должны будете отформатировать поле month, и это, скорее всего, не будет проиндексировано ни в одной другой системе баз данных ...

2 голосов
/ 02 июня 2009
SELECT SUM(total)
FROM table
GROUP BY MONTH(o_date)
0 голосов
/ 19 июня 2018
SELECT year(FROM_UNIXTIME(created)) year, month(FROM_UNIXTIME(created)) month, sum(amount) total
FROM {my_table}
GROUP BY year, month
ORDER BY year, month;
0 голосов
/ 15 августа 2014

Да, у меня так работает:

SELECT MONTHNAME(date), SUM(`in`) as SOMA, date FROM transactions GROUP BY YEAR(date), MONTH(date)

Но мне нужно только показать результат этого года (2014), как я могу это сделать?

0 голосов
/ 20 марта 2014

Попробуйте Group BY, вот так:

select count(A_id) As Tid,Day(CrDate) from Ap Group By Day(CrDate)
...