我有一个包含列[Account_No,Transaction_Amount,Transaction_Date和Transaction_Time]的表。我想在一天中选择“交易金额超过2,000,000/- 和交易时间在10分钟内”的账户。什么将是这个问题。请帮忙。 我正在使用Teradata。按Teradata中的时间查询分组结果
问候
Khawar
我有一个包含列[Account_No,Transaction_Amount,Transaction_Date和Transaction_Time]的表。我想在一天中选择“交易金额超过2,000,000/- 和交易时间在10分钟内”的账户。什么将是这个问题。请帮忙。 我正在使用Teradata。按Teradata中的时间查询分组结果
问候
Khawar
一种方式是自连接(如Teradata数据没有实现RANGE OVER
语法)是这样的:
SELECT t1.Account_No,
t1.Transaction_Date,
t1.Transaction_Time,
Sum(t2.Transaction_Amount) AS sumamt
FROM tab AS t1
JOIN tab AS t2
ON t1.Account_No = t2.Account_No
-- same day within the next ten minutes of a transaction
AND t2.Transaction_Date = t1.Transaction_Date
AND t2.Transaction_Time BETWEEN t1.Transaction_Time
AND t1.Transaction_Time + INTERVAL '10' MINUTE
GROUP BY 1,2,3
HAVING sumamt >= 2000000 -- more than 2 mio
QUALIFY
Row_Number() -- only one row per account/day
Over (PARTITION BY t1.Account_No, t1.Transaction_Date
ORDER BY t1.Transaction_Time) = 1
嗨,@ dnoeth,对于周末延迟回复感到抱歉,我无法访问Teradata,所以我必须等待开始一周检查。你的建议查询工作,我得到的结果。然而,存在一个问题,即“查询使结果加倍”,例如如果有两个实际的交易查询显示为4.所以我简化了查询单个故事,它的工作。不过谢谢你宝贵的时间和回应。最好的祝福。 – KhawarAmeerMalik
你和更多的细节可以? *交易时间在1到10分钟之间*平均值,在10分钟内或在每小时/每天的前十分钟内? – dnoeth
这将是“在10分钟内”先生。 – KhawarAmeerMalik
任何10分钟的时间?从14:03到14:13?或者你的意思是14:00 - 14:09,14:10 - 14:19等?你如何定义10分钟的开始? – Andrew