特定のデータセットを毎日分析しようとしています。テーブルは次のようになります。
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
Daily analysis
を使用していくつかのことをしようとしていますcustNo
。上記のように、顧客番号は繰り返されます。までの1日2013-01-31 1:00am
です2013-02-01 00:59am
。のクエリを作成しようとしていますFirstVistTime
。したがって、 for31st Jan
は である必要が2013-01-31 20:15
あり、 for は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
2 つの値を返す です。