我有一个查询,本质上是尝试为每个不同的 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/