https://dbfiddle.uk/z01O9eNR

我有下表:

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

以下为表格中的数据:

+------------------+
| Results Table 1a |
+----+------------+---------------+
| id | fruit_name | purchase_date |
+----+------------+---------------+
|  1 | apple      |   2021-02-02  |
|  2 | pear       |   2021-02-02  |
|  3 | orange     |   2021-02-02  |
|  4 | apple      |   2021-02-02  |
|  5 | grapes     |   2021-02-04  |
|  6 | grapes     |   2021-02-05  |
+----+------------+---------------+

如何创建一条不仅返回表内容的SELECT语句,如下所示:

SELECT *
FROM fruits;

但也给了我一个额外的专栏,告诉我how many purchases were made the same date.我想要一个如下所示的结果表:

+------------------+
| Results Table 1b |
+----+------------+---------------+--------------------+
| id | fruit_name | purchase_date | same_day_purchases |
+----+------------+---------------+--------------------+
|  1 | apple      |   2021-02-02  |                  4 |
|  2 | pear       |   2021-02-02  |                  4 |
|  3 | orange     |   2021-02-02  |                  4 |
|  4 | apple      |   2021-02-02  |                  4 |
|  5 | grapes     |   2021-02-04  |                  1 |
|  6 | grapes     |   2021-02-05  |                  1 |
+----+------------+---------------+--------------------+

例如:在2021-02-02天有4笔购买,所以对于那一天的每purchase_date笔交易,same_day_purchases应该是4笔.

我可以使用GROUP BY创建单独的语句:

SELECT purchase_date, COUNT(*) AS same_date_purchases
FROM fruits
GROUP BY purchase_date;

但我正在寻找一种方法来声明启用Results Table 1b的结果表.

推荐答案

您可以按如下方式使用COUNT窗口函数:

SELECT id, fruit_name, purchase_date,
       COUNT(*) OVER (PARTITION BY purchase_date) AS same_date_purchases
FROM fruits

请看demo.

Sql相关问答推荐

重复ID消除跨越两列

Postgresql在加入时显示重复的行

Snowflake SQL比较克隆x原始计数

如何在PostgreSQL中同时为id s列表执行多个update语句?'

更新在两个或多个面中具有交点的面

Stack Exchange站点上的最短帖子(按正文长度计算,用户名为原始发帖(SEDE))

Django将字符串筛选为整数?

SQL:如何将相应位置的两个数组中的元素组合在一起

从列中提取子字符串的ORDER BY CASE语句

Pgsql-返回包含多行数据的行

如何计算给定日期前三个月的值以及月初数据?

使用递归CTE在BigQuery中获取文件路径

获取分布在同一行的列中的出现次数

Grafana SQL 模板变量(值、文本)

如何在 case 语句中使用聚合?

oracle中多行的跨日期范围的交集

Snowflake 中的对象是如何比较的?

多列上的 SQL UNIQUE 约束 - 它们的组合必须是唯一的还是至少其中之一?

如何在一个存储过程中创建全局临时表,并在另一个存储过程中使用它

snowfalke 会在 Select 运行时锁定表吗?