在MySQL GroupBy中,如何选择第n个值——例如,不是最大值或最小值,而是第2个值?
具体地说,我有多个与会话相关联的点击,每个点击都有一个日期时间。对于每个会话,我想选择“第一次单击日期时间”、“第二次单击日期时间”、“第三次单击日期时间”等字段 到目前为止,我有这样的想法:在MySQL GroupBy中,如何选择第n个值——例如,不是最大值或最小值,而是第2个值?,mysql,select,group-by,denormalization,Mysql,Select,Group By,Denormalization,具体地说,我有多个与会话相关联的点击,每个点击都有一个日期时间。对于每个会话,我想选择“第一次单击日期时间”、“第二次单击日期时间”、“第三次单击日期时间”等字段 到目前为止,我有这样的想法: 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_
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;
如何获取第二、第三、第四等。单击日期时间
谢谢
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\u id,单击\u datetime,id)
上创建索引,以便快速运行
在
(session\u id,单击\u datetime,id)
上创建索引,以便快速运行。您可能正在寻找排名高于功能的功能。。您可能希望排名高于功能。。这里的“id”字段是什么?这看起来是可行的,但实际上会让我的代码变得非常混乱;当我在sql代码中说“table1”时,实际上是选择与其他选择结合在一起。不过,谢谢你@Marina,您可以创建一个视图table1
,将其称为表。这里的字段“id”是什么?这看起来是可行的,但实际上会让我的代码变得非常混乱;当我在sql代码中说“table1”时,实际上是选择与其他选择结合在一起。不过,谢谢你@Marina,您可以创建一个视图table1
,将其称为表。