Этого можно добиться с помощью агрегатной функции sum
и группировки по date
и group
. Поскольку у вас есть данные временной метки, приведенное ниже решение приводит их к типу date
и группирует, используя это. Наконец, в проекции я также использовал text
, чтобы удалить дополнительную информацию о дате и просто предоставить YYYY-MM-DD
.
Схема (PostgreSQL v11)
CREATE TABLE my_table (
"date" TIMESTAMP,
"value" INTEGER,
"Group" VARCHAR(1)
);
INSERT INTO my_table
("date", "value", "Group")
VALUES
('2021-04-07 00:00:00', '5', 'a'),
('2021-04-07 00:00:00', '10', 'b'),
('2021-04-07 01:00:00', '5', 'a'),
('2021-04-07 01:00:00', '4', 'b'),
('2021-04-08 00:00:00', '5', 'a'),
('2021-04-08 00:00:00', '8', 'b'),
('2021-04-08 01:00:00', '4', 'a'),
('2021-04-08 01:00:00', '5', 'b');
Запрос №1
select
"date"::date::text,
sum(value) as total_value,
"Group"
FROM
my_table
GROUP BY
"date"::date, "Group";
date |
total_value |
Group |
2021-04-07 |
10 |
a |
2021-04-07 |
14 |
b |
2021-04-08 |
9 |
a |
2021-04-08 |
13 |
b |
Просмотр скрипта БД
person
ggordon
schedule
16.05.2021