假设我的表格有两列id
和hash
:
id | hash ------------------ 1 | bb 2 | aa 3 | aa 4 | bb
我需要按id
(降序)对它们进行排序,然后将所有具有相同值的行分组。执行此操作的算法将是例如:
hash
相同的列在一起。id
降序排列子集。id
降序排序。结果将是
id | hash ------------------ 4 | bb 1 | bb 3 | aa 2 | aa
感谢。
答案 0 :(得分:2)
在Postgres 8.4中...(按编号排序只是要排序的列的别名)
select id,hash, max(id) over (partition by hash) h
from my_table order by 3 desc,1 desc;
OR
select id,hash
from my_table order by max(id) over (partition by hash) desc,
id desc
答案 1 :(得分:1)
这样的事情会有用吗?...
SELECT *
FROM my_table MT1
ORDER BY (SELECT MAX(id)
FROM my_table MT2
WHERE MT2.hash = MT1.hash) DESC,
id DESC;