Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
postgresql查询生成多列报表_Sql_Postgresql - Fatal编程技术网

postgresql查询生成多列报表

postgresql查询生成多列报表,sql,postgresql,Sql,Postgresql,我在postgresql数据库中有一个客户事务表,包含以下列 transactionId (primary)| customerId(int8)| transactionDate (timestamp) 1 2 2020-02-14 2 3 2020-01-08 3 1

我在postgresql数据库中有一个客户事务表,包含以下列

transactionId (primary)| customerId(int8)| transactionDate (timestamp)
1                        2                 2020-02-14
2                        3                 2020-01-08
3                        1                 2020-02-06
4                        2                 2020-02-13
5                        2                 2020-03-24
需要构建一个查询来创建下面的报告

CustomerId| FirstTransaction| TotalTransactions| Transactions/Week| RecentTransactions
1           2020-02-06        1                  1                  2020-02-06
3           2020-01-08        1                  1                  2020-01-08
2           2020-02-13        3                  2                  2020-03-24
当客户最初开始时,总交易量、每周频率、最近交易量?
报告应仅考虑(包含)最近3个月的记录。

请尝试以下方法,以下是答案

在过去三个月内,您还可以在
where
条件下使用以下命令

transactionDate >  CURRENT_DATE - INTERVAL '3 months'

对于每周交易,您是否浏览客户的整个历史记录,找出每周的交易,然后将其除以有交易的周数?例如,客户1在2020年1月的第一周可能有5笔交易,没有其他交易。您的数据库可能有50周的事务处理时间。那么,您是否认为客户1每周的交易量为5笔交易除以50周=平均每周0.1笔交易
您只想要当前一周的交易?TransactionWeek对于customerId 3(总交易量本身1)是不正确的。@Udhaya
2020-01-08
出现在该月的第二周。这不是第一周或第二周,而是每周的平均交易数。我们还需要考虑过去(过去)3个月的记录。
| customerid | firsttransaction         | totaltransactions | recenttransactions       | Transactions/Week |
| ---------- | ------------------------ | ----------------- | ------------------------ | ----------------- |
| 1          | 2020-02-06               | 1                 | 2020-02-06               | 1                 |
| 2          | 2020-02-13               | 3                 | 2020-03-24               | 2                 |
| 3          | 2020-01-08               | 1                 | 2020-01-08               | 1                 |
transactionDate >  CURRENT_DATE - INTERVAL '3 months'