[英]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.