Суммирование значений столбцов по группам по дате
У меня есть эти две таблицы:
Первый (Система):
ID GROUP
---------
1 1
2 1
3
4 1
Второе (значения):
SYS_ID DATE VALUE
------------------
1 23 3
1 21 5
3 20 7
4 19 9
3 19 11
2 23 13
Мне нужно узнать сумму VALUE в одном столбце для уникальной даты для всех SYS_ID в конкретной группе в указанном диапазоне дат.
Как (для группы '1' и даты ( >=20 и <25)):
DATE VALUE
-----------
21 5
23 16
Самое близкое, что у меня есть, это
DATE VALUE
-----------
21 5
23 3
23 13
с этим
select
val.date, val.value
from
values as val
inner join
(select id from system where group = 1) as sys on (val.sys_id = sys.id)
where
(val.date >= 21 and val.date < 25)
group by
val.date, sys.id
который при попытке удалить 'SYS.ID' из 'GROUP BY' выдает ошибку, говорящую, что 'VAL.VALUE' должен быть в предложении 'GROUP BY'.
Какие-либо предложения?
1 ответ
Решение
Я думаю, вам просто нужно исправить group by
и добавить sum()
:
select v.date, sum(v.value)
from values v inner join
system s
on s.id = val.sys_id
where s.group = 1 and v.date >= 21 and v.date < 25
group by val.date;