SQL:集群B列的类似值,但是按列A“排序”

时间:2010-07-13 10:58:45

标签: sql postgresql

假设我的表格有两列idhash

id     | hash
------------------
1      | bb
2      | aa
3      | aa
4      | bb

我需要按id(降序)对它们进行排序,然后将所有具有相同值的行分组。执行此操作的算法将是例如:

  • Gather进入析取子集表格,以便hash相同的列在一起。
  • 按照最大id降序排列子集。
  • 子集行可以选择按id降序排序。

结果将是

id     | hash
------------------
4      | bb
1      | bb
3      | aa
2      | aa

感谢。

2 个答案:

答案 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;