在 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
这提示我在 select
或 group by
子句中包含 date
。当我包含它时,它也按日期分组。
期望的输出是:
123 460
HAVING
子句过滤结果 在 分组和聚合之后,因此为了做到这一点,您想要在 HAVING
子句中的任何字段都必须是在 GROUP BY
或 SELECT
列表中。 WHERE
子句在 进行分组和聚合之前过滤行 。
要获得您想要的结果,只需将 date between...
条件移动到 WHERE
子句中:
SELECT customer,SUM(price)
FROM table
WHERE date BETWEEN 3-Jan-2015 AND 8-Jan-2015
GROUP BY customer
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
这提示我在 select
或 group by
子句中包含 date
。当我包含它时,它也按日期分组。
期望的输出是:
123 460
HAVING
子句过滤结果 在 分组和聚合之后,因此为了做到这一点,您想要在 HAVING
子句中的任何字段都必须是在 GROUP BY
或 SELECT
列表中。 WHERE
子句在 进行分组和聚合之前过滤行 。
要获得您想要的结果,只需将 date between...
条件移动到 WHERE
子句中:
SELECT customer,SUM(price)
FROM table
WHERE date BETWEEN 3-Jan-2015 AND 8-Jan-2015
GROUP BY customer