我有一张桌子,看起来像这样
我想把销售额加起来,只显示2010年的销售额。 使用DATE_PART可以工作,除了当我尝试使用WHERE子句时
SELECT date_part('year', date) AS year, SUM(weekly_sales) as yearly_sales
FROM sales
GROUP BY year
SELECT date_part('year', date) AS year, SUM(weekly_sales) as yearly_sales
FROM sales
GROUP BY year
WHERE year = 2010;
是不是因为date_part是双精度?
解决方案:
该 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'