You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL:如何结合COUNT与GROUP BY在查询结果中添加同日期购买量列

如何在查询结果中添加当日购买总次数列

你已经能单独统计每日购买量了,但想要把这个统计值直接关联到每一行数据里对吧?这时候用窗口函数就完美解决了,不用做复杂的JOIN,一条语句就能搞定。

首先回顾下你的表结构和数据:

CREATE TABLE fruits ( 
  id INT PRIMARY KEY, 
  fruit_name VARCHAR, 
  purchase_date DATE 
);

表中现有数据:

idfruit_namepurchase_date
1apple2021-02-02
2pear2021-02-02
3orange2021-02-02
4apple2021-02-02
5grapes2021-02-04
6grapes2021-02-05

你需要的完整SQL语句如下,核心是用COUNT() OVER(PARTITION BY purchase_date)来计算每个日期的购买次数,这个窗口函数会为每一行数据添加上其对应purchase_date分组的总记录数:

SELECT 
  *,
  COUNT(*) OVER(PARTITION BY purchase_date) AS same_day_purchases
FROM fruits;

为什么这个方法可行?

  • PARTITION BY purchase_date会把数据按购买日期分成独立的分组
  • COUNT(*)统计每个分组内的总记录数
  • OVER()子句让这个统计值应用到分组内的每一行,而不是像GROUP BY那样只返回每组一行的压缩结果

执行这条语句后,就能得到你期望的结果:

idfruit_namepurchase_datesame_day_purchases
1apple2021-02-024
2pear2021-02-024
3orange2021-02-024
4apple2021-02-024
5grapes2021-02-041
6grapes2021-02-051

内容的提问来源于stack exchange,提问作者gb_spectrum

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 14:27:37