【问题标题】:date_part - gives error when using where clausedate_part - 使用 where 子句时出错
【发布时间】:2020-04-22 17:28:01
【问题描述】:

我有一张像这样的表

我想汇总销售额并仅显示 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 是双精度的?

【问题讨论】:

    标签: sql postgresql date group-by sum


    【解决方案1】:

    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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 1970-01-01
      • 2017-04-24
      • 1970-01-01
      相关资源
      最近更新 更多