gpt4 book ai didi

sql - 从由其他列聚合并选择最大日期的列中获取任何值

转载 作者:行者123 更新时间:2023-12-04 20:10:04 28 4
gpt4 key购买 nike

我是一个 SQL 新手,我有一个包含以下列的表

+-------+--------+----+----+
| email | date | IP | ID |
+-------+--------+----+----+

我想做这样的事情:

SELECT T.email,
Max(T.date),
T.ip AS User_IP,
T.id AS ID

FROM LoginTable as T

WHERE (IP IS NOT NULL)

GROUP BY T.email

当然这是行不通的,因为 IP 和 ID 不在 (max) 聚合函数中。但我需要 IP 与 ID 和日期相匹配,所以我不能在这些列中使用 (max),因为我会从不同的行中获得结果,而这不是一个选项。

回顾一下,我需要:

  • 每个唯一的电子邮件一行(因此分组依据)
  • 所选行是具有最近日期的行 -> max(date)
  • 我需要 IP 和 ID 与 max(date) 选择的行来自同一行。

最佳答案

救援窗口函数:

SELECT email, date, user_ip, id
FROM (SELECT email, date, ip AS user_ip, logid AS id,
ROW_NUMBER() OVER (PARTITION BY email ORDER BY date DESC) AS rn
FROM mytable
WHERE ip IS NOT NULL) t
WHERE rn = 1

注意:此查询将为每个唯一电子邮件准确检索一行。如果你想支持与最大日期相关的记录,你应该使用 rank() 而不是 row_number()

关于sql - 从由其他列聚合并选择最大日期的列中获取任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47507620/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com