date_part - выдает ошибку при использовании предложения where - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть таблица, которая выглядит следующим образом

enter image description here

Я хочу суммировать продажи и показывать продажи только за 2010 год. Использование DATE_PART работает кроме случаев, когда я пытаюсь использовать там предложение WHERE

SELECT date_part('year', date) AS year, SUM(weekly_sales) as yearly_sales
FROM sales
GROUP BY year

enter image description here

SELECT date_part('year', date) AS year, SUM(weekly_sales) as yearly_sales
FROM sales
GROUP BY year
WHERE year = 2010;

Это потому, что date_part имеет двойную точность?

1 Ответ

0 голосов
/ 22 апреля 2020

Предложение WHERE идет перед предложением GROUP BY и не может получить доступ к псевдонимам столбцов, определенным в предложении SELECT.

Вы можете сделать:

SELECT date_part('year', date) AS year, SUM(weekly_sales) as yearly_sales
FROM sales
WHERE date_part('year', date) = 2010
GROUP BY year

Или, более эффективно:

SELECT 2010 AS year, SUM(weekly_sales) as yearly_sales
FROM sales
WHERE date >= date '2010-01-01' and date < date '2011-01-01'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...