sql - IMPALA 查询他上次交易后最近 30 天的客户交易
问题描述
我有 2 个表 CustomerInfo 和 CustomerTransaction
顾客信息
Name CustID Spouse Address TransactionID
Noah 11 Michael Wilson 72 Oxford Street 1234567
Kim 8 Ed Thumpson 67 York Street 7245678
Viktor 3 Brian Carter 16 Darlinghurst Street 9873567
James 9 Helen Wright 59 Paul Street 2135678
Liam 5 Karen Collins 82 Newtown Park 2356789
Sandra 6 Karen Collins 82 Newtown Park 2137849
客户交易
TransactionID LastTransactionTime Type
2356789 8/01/19 11:50 Credit
2137849 7/21/19 09:30 Credit
1234567 8/02/19 11:50 Money
7245678 7/25/19 11:50 Credit
9873567 7/17/19 11:50 Credit
9873567 7/22/19 01:50 Credit
2137849 7/29/19 09:50 Credit
9873567 4/10/19 23:50 Credit
2137849 7/13/19 16:50 Credit
7245678 5/1/19 19:50 Credit
需要编写一个查询,我必须使用以下字段(TransactionCount)创建一个新表。它应该只显示从 LastTransactionTime 开始的最近 30 天的 count transactionCount。并且类型应该只是信用。
结果应该是:
CustID Type TransactionID LastTransactionTime TransactionCount
5 Credit 2356789 8/01/19 11:50 1
6 Credit 2137849 7/29/19 09:50 3
8 Credit 7245678 7/25/19 11:50 1
3 Credit 9873567 7/22/19 01:50 2
解决方案
尝试按客户和交易汇总过去 30 天内发生的交易以及仅涉及信用的交易。
SELECT
ci.CustID,
'Credit' AS Type,
ci.TransactionID,
MAX(ct.LastTransactionTime) AS LastTransactionTime,
COUNT(*) AS TransactionCount
FROM CustomerInfo ci
INNER JOIN CustomerTransaction ct
ON ci.TransactionID = ct.TransactionID
WHERE
ct.LastTransactionTime > DATE_SUB(NOW(), 30) AND
ct.Type = 'Credit'
GROUP BY
ci.CustID,
ci.TransactionID;
推荐阅读
- php - parrot linux xampp PHP错误:没有显示
- matlab - 获取每列中第一次出现 1 的行号
- typescript - 如何将 NestJs 数据库模型项目导入另一个?
- css - 使用 filter:opacity 在同一个元素中创建两个版本的颜色
- node.js - 多个 dynamodb 文档客户端
- reactjs - 在 UI 管理器中找不到 BV 线性渐变模块
- swift - 如何更改表单中选取器中行的背景颜色?
- python - 导入 fancyimpute 运行时和 ImportError
- algorithm - 将节点划分为循环
- javascript - 用于数据库查找的 While 循环