sql - 返回按查询分组的整行

标签 sql postgresql

我有一个查询,本质上是尝试为每个不同的 other_field 获取最大序列值(下面的简化示例)。

有几个字段你需要知道

    ID text
    ser serial
    other_field text

对于每个不同的other_field,我想找到具有最大序列值的整行

我基本上想返回整行,但最终不得不加入同一个表来检索我想要的内容(因为 group by 子句通常非常严格)。我在下面使用的查询

    SELECT small_q.id FROM (
        SELECT id, MAX(ser) as serial FROM table_name GROUP BY other_field
    ) max_q JOIN table_name full_t ON small_q.serial = max_q.serial

有什么办法可以避免在同一张 table 上加入吗?

提前致谢

最佳答案

简单的答案是使用窗口函数:

SELECT main.* FROM (
        SELECT *, MAX(ser) over (partition by other_field) as serial FROM table_name
    ) main where main.ser=main.serial

关于sql - 返回按查询分组的整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58204153/

相关文章:

php - 服务器抛出异常,客户端误解为成功

sql - 在两列中选择具有相似数据的不同数据

用于计算 ID 数并在日期范围内为空时显示 0 的 SQL 查询

sql - MySQL。使用整数数据区间

postgresql - 重启 vm 后无法访问数据库

sql - 将自动增量值添加到与另一列中的重复值相关的列

sql - 具有动态命名空间的 Oracle extractvalue

mysql - 在 SQL 查询中封装聚合函数

php - 粘性行: fetching some rows always on top of list in postgresql

java - GWT + Postgres 教程