PostgreSQL 9.5.4 का उपयोग करके गॉर्डन के दृष्टिकोण की कोशिश की, और इसने शिकायत की कि
जिसका अर्थ है lag()
. का उपयोग करना FILTER
के साथ अनुमति नहीं है। इसलिए मैंने max()
. का उपयोग करके गॉर्डन की क्वेरी को संशोधित किया , एक अलग विंडो फ्रेम, और CTE:
WITH subq AS (
SELECT
"user", event, time as event_b_time,
max(time) FILTER (WHERE event = 'A') OVER (
PARTITION BY "user"
ORDER BY time
ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
) AS last_event_a_time
FROM events
ORDER BY time
)
SELECT
"user", event_b_time, last_event_a_time
FROM subq
WHERE event = 'B';
सत्यापित है कि यह PostgreSQL 9.5.4 के साथ काम करता है।
FILTER
. के लिए गॉर्डन को धन्यवाद चाल!