मेरे पास एक सारणी है जो एक उत्पाद के उपयोग का प्रतिनिधित्व करती है, जैसे कि लॉग की तरह। उत्पाद उपयोग एकाधिक टाइमस्टैम्प के रूप में लॉग किया गया है, मैं समय सीमा का उपयोग कर एक ही डेटा का प्रतिनिधित्व करना चाहता हूं।संगत टाइमस्टैम्प वाले कई पंक्तियों को संकुचित करें
यह इस तरह दिखता है (PostgreSQL 9.1):, और मिलती है:
userid | timestamp | product
-------------------------------------
001 | 2012-04-23 9:12:05 | foo
001 | 2012-04-23 9:12:07 | foo
001 | 2012-04-23 9:12:09 | foo
001 | 2012-04-23 9:12:11 | barbaz
001 | 2012-04-23 9:12:13 | barbaz
001 | 2012-04-23 9:15:00 | barbaz
001 | 2012-04-23 9:15:01 | barbaz
002 | 2012-04-24 3:41:01 | foo
002 | 2012-04-24 3:41:03 | foo
मैं पंक्तियों जिसका समय पिछले रन के साथ अंतर एक डेल्टा (2 सेकंड कहते हैं) से कम है संक्षिप्त करने के लिए चाहते हैं समय और समाप्ति समय शुरू करते हैं, इस तरह:
userid | begin | end | product
----------------------------------------------------------
001 | 2012-04-23 9:12:05 | 2012-04-23 9:12:09 | foo
001 | 2012-04-23 9:12:11 | 2012-04-23 9:12:13 | barbaz
001 | 2012-04-23 9:15:00 | 2012-04-23 9:15:01 | barbaz
002 | 2012-04-24 3:41:01 | 2012-04-24 3:41:03 | foo
कृपया ध्यान दें एक ही उत्पाद की कि लगातार उपयोग दो पंक्तियों में विभाजित है उनके उपयोग से अधिक डेल है टा (2 सेकंड, इस उदाहरण में) अलग।
create table t (userid int, timestamp timestamp, product text);
insert into t (userid, timestamp, product) values
(001, '2012-04-23 9:12:05', 'foo'),
(001, '2012-04-23 9:12:07', 'foo'),
(001, '2012-04-23 9:12:09', 'foo'),
(001, '2012-04-23 9:12:11', 'barbaz'),
(001, '2012-04-23 9:12:13', 'barbaz'),
(001, '2012-04-23 9:15:00', 'barbaz'),
(001, '2012-04-23 9:15:01', 'barbaz'),
(002, '2012-04-24 3:41:01', 'foo'),
(002, '2012-04-24 3:41:03', 'foo')
;
यह ... सुंदर है! बिल्कुल इरादे के रूप में काम करता है, धन्यवाद! –