在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
,将其称为表。