我正在尝试对特定的一组数据进行日常分析。该表是这样的:试图获得第一次访问日期
custNo visitTime FirstVisit
1234 2013-01-31 20:15
1234 2013-01-31 22:30
1234 2013-02-15 02:30
1234 2013-02-15 06:30
1234 2013-02-15 11:30
1234 2013-02-15 21:30
我试图做使用custNo
一些Daily analysis
。正如您在上面看到的那样,客户号码重复出现。有一天是2013-01-31 1:00am
到2013-02-01 00:59am
。我正试图想出FirstVistTime
的查询。因此,对于31st Jan
,应该是2013-01-31 20:15
,对于15th Feb
应该是2013-02-15 02:30
。
到目前为止,我想出了这个查询:
select custNo, visitTime, FirstVisit=(select MIN(c.visitTime) FROM customer c where
(c.custNo=ct.custNo and c.visitTime >= '01/01/2013 01:00' and c.visitTime < '03/01/2013
01:00')
from customer ct
where visitTime >= '01/01/2013 01:00'
and visitTime < '03/01/2013 01:00'
这样做的问题是 - 如果custNo
重复它需要所有行考虑并计算最小日期,这在上述情况下将2013-01-31 20:15
。我试图用min(visitTime)over(partition by custNo,visitTime)
。那么这是一个返回两个值的subquery
。