這是一個非常簡化的表格,但過程應該是相同的。我想計算登錄之間的天數。這是表設置查詢。計算行間表之間的日期差異[PostgreSQL]
create table tester (user_id int, login_day date);
insert into tester (user_id,login_day)
values
(1,'2013-10-02'),
(1,'2013-10-05'),
(2,'2013-10-03'),
(2,'2013-10-04'),
(2,'2013-10-07');
爲了讓這樣的:
user_id; login_day
1; "2013-10-02"
1; "2013-10-05"
2; "2013-10-03"
2; "2013-10-04"
2; "2013-10-07"
結果表應該是這樣的:
user_id; login_day; tau
1;"2013-10-02"; 2
1;"2013-10-05"; 1 --see edit
2;"2013-10-03"; 0
2;"2013-10-04"; 2
2;"2013-10-07"; 0
凡頭是天-1的區別。 User_id(1)在2日和5日登錄。所以他們的tau值是2,因爲登錄之間是兩天。
User_id(2)由於在連續日期內登錄,所以其值爲0。
由於沒有時間過去,第7次得到0。如果更容易,也可以標記爲-1。
非常感謝您的幫助。非常感激。
編輯 澄清。 User_id(1),2013-10-05的tau值爲1,因爲它們在將當前日視爲第7天時尚未重新登錄。 例如,如果有人沒有重新登錄,他們的頭值不斷增加。因此,自從user_id = 1上次登錄時,他們當前的tau值爲1,並且該值每天不會再重新登錄,因此每天都會增加1個。 再次感謝 - 特別是a_horse_with_no_name和Linger for the快速反應,並幫助我澄清一下這個問題
我不明白你的編輯。您首先說的是您需要登錄日期和上次登錄日期之間的天數。我的答案告訴你如何得到這個。現在您需要登錄日期和當前日期之間的天數。但是,您的結果表格仍然反映了您的第一個要求。那麼你想要什麼,登錄日期和登錄日期和當前日期之間的天數?你能解決你的結果表嗎? – Linger
@靈兒。你的回答是正確的,並顯示我想要的。我想測量登錄之間的天數。所以如果有人沒有重新登錄,他們的頭值就會不斷增加。因此,由於user_id = 1在5日上次登錄,因此它們的tau值爲1,並且該值每天都會不斷增加1,因此它們不會重新登錄。 –
好的,如果我的答案是您正在查找的內容爲了和最好的答案,你能將它標記爲接受的答案嗎? – Linger