分组依据与具有子句中的日期列

1 sql group-by 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
Run Code Online (Sandbox Code Playgroud)

我想按客户查看 1 月 3 日和 1 月 7 日日期之间的 SUM(Price)

就像是:

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

这提示我dateselectorgroup by子句中有一个。当我包含它时,它也按日期分组。

期望的输出是:

123 460
Run Code Online (Sandbox Code Playgroud)

auc*_*ria 5

HAVING子句在分组和聚合之后过滤结果,因此为了执行此操作,您需要在HAVING子句中的任何字段都必须在GROUP BYorSELECT列表中。该WHERE子句在进行分组和聚合之前过滤行。

To get the results you want, simply move the date between... condition into a WHERE clause:

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