mysql - 如何根据另一个列值获取最大值(列值)

标签 mysql sql group-by

我有一个包含以下架构和示例值的表。

enter image description here

我正在尝试编写一个查询,为每个用户提供连接状态和断开状态的最大(时间戳)。

我正在寻找的所需查询的输出架构示例是:

用户名 |已连接_MAX_时间戳 | Disconnected_MAX_Timestamp

我试过的查询是这样的:

SELECT username,socketstatus,max(timestamp) from socketinfo group by username,socketstatus

同样的输出是:

enter image description here

谁能告诉我如何实现所需的输出?

最佳答案

只需使用条件聚合:

select username,
       max(case when socketstatus = 'Connected' then timestamp end) as max_connected_timestamp,
       max(case when socketstatus = 'Disconnected' then timestamp end) as max_disconnected_timestamp,
from socketinfo
group by username;

关于mysql - 如何根据另一个列值获取最大值(列值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47101864/

相关文章:

java - MYSql 中的全文搜索

php - 如何让多条记录在mysql查询的网页上显示?

sql - 联合 SQL Server 表中的所有几何图形,如 Postgres 中的 GeomUnion

sql - 跳过特定条件的 SQL 间隙和正确的 Lead() 使用

sql - (+) 在 Oracle SQL 中有什么作用?

mysql - 选择不同的同时也按小时分组

sql - 按星期几按小时计算的平均计数

MySQL : Selecting values from a specific column is very slow

mysql - UTF-8 字符问题;我看到的不是我存储的

mysql - 多个GROUP BY + COUNT在同一个表上显示0值