簡體   English   中英

在MySQL GROUP BY中,如何選擇第n個值(例如,不是max或min,而是第2個)?

[英]In a MySQL GROUP BY, how can one select the nth value --not the max or min, but 2nd, for example?

具體來說,我有多個與會話相關的點擊,並且每個點擊都有一個對應的日期時間。 對於每個會話,我想選擇“ first_click_datetime”,“ second_click_datetime”,“ third_click_datetime”等字段作為字段。

到目前為止,我有這樣的事情:

SELECT session_id, 
min(click_datetime) as first_click_datetime,
CASE
  when total_number_of_clicks = 2 then max(click_datetime)
/* when total_number_of_clicks >2 then ???? */
  else null
END as second_click_datetime
FROM table1 GROUP BY 1;

如何獲得第二,第三,第四等click_datetime?

謝謝!

SELECT  session_id,
        (
        SELECT  click_datetime
        FROM    table1 t1
        WHERE   t1.session_id = td.session_id
        ORDER BY
                session_id DESC, click_datetime DESC, id DESC
        LIMIT   1
        ) AS first_click,
        (
        SELECT  click_datetime
        FROM    table1 t1
        WHERE   t1.session_id = td.session_id
        ORDER BY
                session_id DESC, click_datetime DESC, id DESC
        LIMIT   1, 1
        ) AS second_click,

        (
        SELECT  click_datetime
        FROM    table1 t1
        WHERE   t1.session_id = td.session_id
        ORDER BY
                session_id DESC, click_datetime DESC, id DESC
        LIMIT   2, 1
        ) AS third_click
FROM    (
        SELECT  DISTINCT session_id
        FROM    table1
        ) td

(session_id, click_datetime, id)上創建索引(session_id, click_datetime, id)以使其快速運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM