Teradata中按时间分组查询结果

Teradata中按时间分组查询结果,teradata,Teradata,我有一个列为[账户号、交易金额、交易日期和交易时间]的表。我想选择一天内“交易金额总和超过2000000/-且交易时间在10分钟内”的账户。对此的查询将是什么。请帮忙。 我正在使用Teradata 问候 Khawar一种方法是自连接(因为Teradata不在语法上实现范围),如下所示: SELECT t1.Account_No, t1.Transaction_Date, t1.Transaction_Time, Sum(t2.Transaction_Amount) AS su

我有一个列为[账户号、交易金额、交易日期和交易时间]的表。我想选择一天内“交易金额总和超过2000000/-且交易时间在10分钟内”的账户。对此的查询将是什么。请帮忙。 我正在使用Teradata

问候

Khawar

一种方法是自连接(因为Teradata不在语法上实现
范围),如下所示:

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

你能告诉我更多的细节吗?交易时间在1到10分钟之间是什么意思,在10分钟内还是在一小时/天的前10分钟内?这将是“在10分钟内”,先生。任何10分钟的时间?从14:03到14:13?还是说14:00-14:09、14:10-14:19等等?您如何定义10分钟的开始时间?我的想法是检查一天内的交易总额,如果总额大于2百万,则检查其交易时间,如果第一笔交易到最后一笔交易的时间范围小于等于10分钟,则显示它们。这是我唯一不知道的语法。我希望现在我把自己说清楚了。过了午夜,每隔10分钟怎么样?例如2017-02-26 23:57:30至2017-02-27 00:07:30Hi,@dnoeth,很抱歉延迟响应,因为在周末我无法访问Teradata,所以我不得不等待本周开始检查。你建议的查询有效,我得到了结果。但是有一个问题,即“查询结果加倍”,例如,如果有两个实际交易,则查询显示4。所以我把这个问题简化成了一个简单的故事,它成功了。不过,感谢您宝贵的时间和回复。顺致敬意,