在 having 子句中使用日期列分组

Group By with date column in the having clause

customer    price   date
123         100     1-Jan-15
321         200     2-Jan-15
123         10      3-Jan-15
123         50      4-Jan-15
321         150     5-Jan-15
123         100     6-Jan-15
123         300     7-Jan-15
321         500     8-Jan-15
123         700     9-Jan-15

我想按客户分组查看 1 月 3 日和 1 月 7 日之间的 SUM(价格)

类似于:

select customer,sum(price) from table group by customer 
having date between 3-Jan-2015 and 8-Jan-2015 

这提示我在 selectgroup by 子句中包含 date。当我包含它时,它也按日期分组。

期望的输出是:

123 460

HAVING 子句过滤结果 分组和聚合之后,因此为了做到这一点,您想要在 HAVING 子句中的任何字段都必须是在 GROUP BYSELECT 列表中。 WHERE 子句在 进行分组和聚合之前过滤行

要获得您想要的结果,只需将 date between... 条件移动到 WHERE 子句中:

SELECT customer,SUM(price)
  FROM table
  WHERE date BETWEEN 3-Jan-2015 AND 8-Jan-2015
  GROUP BY customer