sql - 如何从访问日志中选择 DISTINCT(username) 和 MAX(timestamp) - postgresql

标签 sql postgresql max distinct

我有一个应用程序的日志文件,其中显示两列,用户名和时间戳。我正在尝试运行 PostgreSQL 查询以仅显示每个用户最后一次登录的时间。

这是我到目前为止整理的查询:

SELECT DISTINCT username, MAX(timestamp) FROM log
GROUP BY username, timestamp;

不幸的是,这仍然给我多个用户名条目,每个条目都有不同的时间。关于如何只显示每个用户的最后时间戳的任何提示?

我对 SQL 还是个新手,所以如果有任何帮助,我们将不胜感激。谢谢。

最佳答案

问题是group by:

SELECT username, MAX(timestamp)
FROM log
GROUP BY username;

但是,如果您想要log 记录中的所有信息,DISTINCT ON 是更好的选择:

SELECT DISTINCT ON (username) l.*
FROM log
ORDER BY username, timestamp DESC;

你对 SELECT DISTINCT 的使用让我怀疑这可能是你想要的。

关于sql - 如何从访问日志中选择 DISTINCT(username) 和 MAX(timestamp) - postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40514775/

相关文章:

postgresql - 如何使用脚本查找数据库中的所有对象?

sql - 保证递归查询的唯一性

php mysql 最大值忽略字母

mysql - 选择最大日期时间返回错误值

postgresql - 具有使用权限但不具有删除权限的 Postgres 角色

python - 包含最大值的列的名称

sql - 是否可以使用 cfquery 的结果重新绑定(bind) sql 参数?

mysql - 如何将记录从登台表插入到主表并将记录更新为同步状态为真

sql - 双重过滤具有唯一值和与特定字符串匹配的值的联接表

sql - Oracle SQL 日期间查询