سؤال

وأنا تتبع صفحة وجهات النظر داخل وحدات باستخدام الجدول التالي:

id | page_id | user_id | session_id | created

وكل صفحة هي فريدة من نوعها إلى وحدة نمطية معينة. حتى الصفحة 14 موجود فقط في وحدة 2، على سبيل المثال.

وأنا أحاول أن أكتب استعلام أن يقول لي عندما بدأت جلسة عرض (GROUP BY SESSION_ID) لوحدة نمطية معينة، ولكن أواجه مشكلة مع بلدي الطلب. في الأساس، لتلك الدورة مجمعة، أريد أن أعود في أقرب وقت ممكن "خلق" (وقت البدء من جلسة المشاهدة) وأحدث PAGE_ID (مدى التقدم الذي حصل داخل وحدة).

ما هي أفضل طريقة لتحقيق ذلك؟

هل كانت مفيدة؟

المحلول

وأعتقد أنك سوف تحتاج إلى استخدام الاستعلامات الفرعية في اختيار:

SELECT a.session_id, MIN(a.created) as start_time, 
b.page_id AS last_page, b.end_time
FROM table a 
INNER JOIN 
   (SELECT b.session_id, MAX(b.created) as end_time, MAX(b.page_id) 
   FROM table b GROUP BY b.session_id) 
ON a.session_id = b.session_id GROUP BY a.session_id

نصائح أخرى

SELECT  MIN(created), MAX(page_id)
FROM    modules
GROUP BY
        session_id
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top