【发布时间】:2021-08-19 08:28:11
【问题描述】:
我有一个数据库,其中包含每位用户支付的金额和日期。现在一些用户在同一天付款,我想在我使用 Amazon QuickSight 创建的数据透视表中每天只显示一次这些付款的累积总和。
我已经完成了以下操作,但它们每行提供一次累积值,我无法仅根据日期而不是其他任何内容进行分区,总和超过已付款。
Calculating Cumulative Sum in PostgreSQL
Calculating cumulative sum with date filtering in PostgreSQL
Calculating Cumulative daily sum in PostgreSQL
PostgreSQL, renumber and cumulative sum at once
How to conditional sum two columns in PostgreSQL 9.3
我的查询如下所示:
SELECT
s.id,
s.first_name,
s.last_name,
s.birth_date,
s.card,
p.datetime,
p.amount,
Sum(p.amount)OVER(partition BY p.datetime ORDER BY p.datetime ) AS "Daily Amount"
FROM payments AS p
LEFT JOIN users AS s
ON p.s_h_uuid = s.h_uuid
ORDER BY p.datetime DESC
我在这一行做 Sum() Over():
Sum(pa.amount)OVER(partition BY p.datetime ORDER BY p.datetime ) AS "Daily Amount"
我的表的数据为:
用户:
| id | first_name | last_name | birth_date | card |
| 2 | first_nam2 | last_nam2 | 1990-02-01 | M |
| 3 | first_nam3 | last_nam3 | 1987-07-23 | M |
| 1 | first_nam1 | last_nam1 | 1954-11-15 | A |
| 4 | first_nam4 | last_nam4 | 1968-05-07 | V |
付款:
| p_uuid | datetime | amount |
| 2 | 2021-05-01 | 100.00 |
| 3 | 2021-05-01 | 100.00 |
| 2 | 2021-05-02 | 100.00 |
| 1 | 2021-05-03 | 100.00 |
| 3 | 2021-05-03 | 100.00 |
| 4 | 2021-05-03 | 100.00 |
| 2 | 2021-05-05 | 100.00 |
| 1 | 2021-05-05 | 100.00 |
| 4 | 2021-05-06 | 100.00 |
我想要的输出是“每日金额”在特定日期仅显示一次,如果有多个具有相同日期的行,那么对于其他行,它应该为空白或显示类似“NA”的内容:
| p.datetime | id | first_name | last_name | birth_date | card | pa.amount | "Daily Amount" |
| 2021-05-01 | 2 | first_nam2 | last_nam2 | 1990-02-01 | M | 100.00 | 200.00 |
| 2021-05-01 | 3 | first_nam3 | last_nam3 | 1987-07-23 | M | 100.00 | |
| 2021-05-02 | 2 | first_nam2 | last_nam2 | 1990-02-01 | M | 100.00 | 100.00 |
| 2021-05-03 | 1 | first_nam1 | last_nam1 | 1954-11-15 | A | 100.00 | 300.00 |
| 2021-05-03 | 3 | first_nam3 | last_nam3 | 1987-07-23 | M | 100.00 | |
| 2021-05-03 | 4 | first_nam4 | last_nam4 | 1968-05-07 | V | 100.00 | |
| 2021-05-05 | 2 | first_nam2 | last_nam2 | 1990-02-01 | M | 100.00 | 200.00 |
| 2021-05-05 | 1 | first_nam1 | last_nam1 | 1954-11-15 | A | 100.00 | |
| 2021-05-06 | 4 | first_nam4 | last_nam4 | 1968-05-07 | V | 100.00 | 100.00 |
是否可以通过某种方式从 SQL(PostgreSQL 特定查询)获取此输出?
【问题讨论】:
-
轻松为您提供帮助 - 简化! minimal reproducible example
-
我提供了在给定日期输出的不同方式,因此输出中有 9 行。我放了更少的行,但是上下文消失了。
标签: sql postgresql where-clause amazon-quicksight