2在一个SQL查询中来自同一列的日期

时间:2013-09-26 10:01:51

标签: mysql sql sql-server

我正在尝试计算同一领域中两个日期之间的平均时间。

基本上我有每个交易的交易日期和ID以及每笔交易的客户ID。

我需要在第一笔交易和第二笔交易之间获得时间。我不介意在excel中计算两者之间的平均值,但我不知道如何从同一领域拉出两个日期。

第一个事务的transaction.created_at减去数据库中每个客户的第二个事务的transaction.created_at。我可以拉出像

这样的交易日期
select
customer.id,
transaction.created_at
count(transaction.id)
from transaction

having count(transaction.id) = 2

由于

2 个答案:

答案 0 :(得分:0)

尝试以下方法检索特定客户交易计数:

Select
Customer.id,
count(transaction.id)
from transaction
where Customer.id = '10'

此处10指定您搜索过的customer id。您必须在创建的SP中将此customer id作为参数传递。

答案 1 :(得分:0)

不确定这是否总是有计数(*)= 2?如果是这样,我认为你可以使用min和max,不是吗?

/*
create table dbo.Example (tran_id int,created_at datetime,cust_id int)
insert dbo.example values (1,'10/1/2012',900)
insert dbo.example values (2,'10/2/2012',901)
insert dbo.example values (3,'10/18/2012',590)
insert dbo.example values (4,'10/10/2012',676)
insert dbo.example values (5,'10/11/2012',123)
insert dbo.example values (6,'10/17/2012',456)
insert dbo.example values (7,'10/9/2012',901)
insert dbo.example values (8,'10/30/2012',900)
insert dbo.example values (9,'10/4/2012',456)
insert dbo.example values (10,'10/17/2012',676)
*/
select 
cust_id,
max([created_at]) as [Last Date],
min([created_at]) as [First Date],
datediff(hh,min([created_at]) ,max([created_at])) as [Hours diff]
from example
group by cust_id
having count(*) = 2
order by cust_id