MySQL के पास कोई विंडो फ़ंक्शन समर्थन नहीं है, लेकिन आप SELECT
. में सहसंबद्ध उपश्रेणियों का उपयोग कर सकते हैं सूची ठीक एक कॉलम पुनर्प्राप्त करने के लिए:
SELECT
event_id,
event_type,
event_time,
(SELECT COUNT(*) FROM events EC WHERE EC.event_type = E.event_type AND EC.event_time > E.event_time) AS subsequent_event_count
FROM
events E
WHERE ...
EXPLAIN
यह। यह निष्पादन तर्क के संदर्भ में CROSS APPLY
. के समान ही है SQL सर्वर में।
एक और तरीका है सेल्फ जॉइन:
SELECT
E.event_id,
E.event_type,
E.event_time,
COUNT(EC.event_id) AS subsequent_event_count
FROM
events E
LEFT JOIN events EC
ON E.event_type = EC.event_type AND E.event_type < EC.event_type
GROUP BY
E.event_id,
E.event_type,
E.event_time
प्रदर्शन के लिए दोनों तरीकों का परीक्षण करें।
आप और भी बहुत कुछ रचनात्मक जोड़ सकते हैं, जैसे
EC.event_time > E.event_time AND EC.event_time < E.event_time + INTERVAL 1 DAY