मैं सबसे पहले तालिकाओं को मिलाऊंगा (बिगक्वेरी में संघ के लिए वाक्यविन्यास अल्पविराम है)। फिर दो दृष्टिकोण हैं:
- विश्लेषणात्मक कार्यों FIRST_VALUE और LAST_VALUE का उपयोग करें।
SELECT id, timestamp_first, timestamp_last, data FROM
(SELECT
id,
timestamp,
FIRST_VALUE(timestamp) OVER(
PARTITION BY id
ORDER BY timestamp ASC
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
AS timestamp_first,
LAST_VALUE(timestamp) OVER(
PARTITION BY id
ORDER BY timestamp ASC
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
AS timestamp_last
FROM table1, table2, table3 - पहला/आखिरी खोजने के लिए टाइमस्टैम्प पर एकत्रीकरण MIN/MAX का उपयोग करें और फिर उसी तालिका में वापस शामिल हों।
SELECT a.id id, timestamp_first, timestamp_last, data FROM (SELECT id, data FROM table1,table2,table3) a INNER JOIN (SELECT id, MIN(timestamp) timestamp_first, MAX(timestamp) timestamp_last FROM table1,table2,table3 GROUP BY id) b ON a.id = b.id