date_part - 当使用where子句时出现错误。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了date_part - 当使用where子句时出现错误。相关的知识,希望对你有一定的参考价值。

我有一张桌子,看起来像这样

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是双精度?

答案

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'

以上是关于date_part - 当使用where子句时出现错误。的主要内容,如果未能解决你的问题,请参考以下文章

在 where 子句中使用多个条件时出现关系运算符错误

在MySQL数据库中使用多个WHERE子句值更新多个列值时出现错误。

#1054 - MySQL 中“where 子句”中的未知列“proximite”

UPDATE 查询的 WHERE 子句中的 SELECT 查询 [重复]

在 where 子句中使用 case 语句的 Oracle Missing 关键字

使用 Load when 子句时出现问题?