powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Группировка и суммирование по не календарному году
3 сообщений из 3, страница 1 из 1
Группировка и суммирование по не календарному году
    #39025057
s0ci0pat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет)

Есть таблица с ежемесячными списаниями. Структура данных простая, но важное замечание, что обычно не начинают пользоваться услугами 1 января:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
+------+------------------+------------+
| user | monthly_accruals |    date    | 
+------+------------------+------------+
| 1    |               50 | 2012-05-06 | 
+------+------------------+------------+
| 1    |               70 | 2012-06-12 | 
+------+------------------+------------+
...
+------+------------------+------------+
| 1    |              100 | 2013-05-11 | 
+------+------------------+------------+
| 2    |               50 | 2012-09-15 | 
+------+------------------+------------+
| 2    |               70 | 2012-10-09 | 
+------+------------------+------------+



В результате нужно подсчитать сколько каждый клиент заплатил за каждый свой год пользования услугой, и желательно вывести начало и номер года. Примерно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
+------+-------+------------+------+
| user | summa |  date_beg  | year |
+------+-------+------------+------+
| 1    |   570 | 2012-05-06 |    1 |
+------+-------+------------+------+
| 1    |   100 | 2013-05-11 |    2 |
+------+-------+------------+------+
| 2    |   120 | 2012-09-15 |    1 |
+------+-------+------------+------+



В MSSQL я бы, возможно, смог бы сделать это с помощью OVER, но куда "курить" на MySQL даже ума не приложу.
...
Рейтинг: 0 / 0
Группировка и суммирование по не календарному году
    #39025302
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s0ci0pat,

фак по переменным посмотрите... хотя зачем?
Код: sql
1.
2.
3.
select user,min(date_format(date_beg,'%Y%M')),sum(summa)
from thetable
group by 1,2

ну хотя для нумерации годов переменные как раз пригодятся
...
Рейтинг: 0 / 0
Группировка и суммирование по не календарному году
    #39025303
dmikelios
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Попробуйте так:

Код: sql
1.
2.
3.
4.
5.
SELECT user, summa, date_beg, year FROM
  (SELECT SUM(monthly_accruals) AS summa, MIN(date) AS date_beg
  , CASE WHEN @u = user THEN @n := @n + 1 ELSE @n := 1 END AS year
  , @u := user AS user FROM tab, (SELECT @u := null, @n := 0) AS var 
  GROUP BY user, EXTRACT(YEAR FROM date)) AS t;
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Группировка и суммирование по не календарному году
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]