@Atroshchenko-Dima
Python, postgres

Как сгруппировать месячные значения в год?

3 таблицы
spoiler
CREATE TABLE dep
(
    id   integer NOT NULL,
    city text    NOT NULL,
    name text    NOT NULL,
    CONSTRAINT dep_pk PRIMARY KEY (id)
);

-- продукты

CREATE TABLE prod
(
    id    integer NOT NULL,
    price integer NOT NULL,
    name  text    NOT NULL,
    CONSTRAINT prod_pk PRIMARY KEY (id)
);

-- продажи

CREATE TABLE sales
(
    time    timestamp    NOT NULL,
    dep_id  integer        NOT NULL,
    prod_id integer        NOT NULL,
    cost    numeric(10, 2) NOT NULL,
    CONSTRAINT sales_fk1 FOREIGN KEY (dep_id) REFERENCES dep (id),
    CONSTRAINT sales_fk2 FOREIGN KEY (prod_id) REFERENCES prod (id)
);


Дата вот в таком виде 2020-12-31 11:15:44.514809, нужно получить 3 строки, сумму продаж( столбец cost) за 2018, 2019,2020г. , т.е должно получиться 3 строки.
select *
FROM	 
		dep
		INNER JOIN prod ON prod.id = dep.id
		INNER JOIN sales ON prod.id = sales.prod_id
WHERE time >= '2018-01-01 00:00:00'
AND city = 'town1'
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SUM(), GROUP BY, YEAR()
Ответ написан
@Atroshchenko-Dima Автор вопроса
Python, postgres
Решил таким способом
select EXTRACT(YEAR FROM time) AS YEAR, SUM(cost) as сумма_продаж 
FROM	 
		dep
		INNER JOIN prod ON prod.id = dep.id
		INNER JOIN sales ON prod.id = sales.prod_id
WHERE time >= '2018-01-01 00:00:00'
AND city = 'town1'
GROUP BY year
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы