分发结果的 SQL 排序



给定这样的产品表:

ID Name     Seller ID  Updated at
-- ----     ---------  ----------
1  First      3         2012-01-01 12:00:10
2  Second     3         2012-01-01 12:00:09
3  Third      4         2012-01-01 12:00:08
4  Fourth     4         2012-01-01 12:00:07
5  Fifth      5         2012-01-01 12:00:06

我想构造一个查询来对产品进行排序,如下所示:

ID
---
1
3
5
2
4

换句话说,查询应显示最近更新的产品,由卖方分发,以最大程度地减少来自同一卖方的连续产品序列的可能性。

关于如何最好地实现这一目标的任何想法?(请注意,此应用程序的代码是Ruby,但如果可能的话,我想在纯SQL中执行此操作)。

编辑:

请注意,查询也应处理这种情况:

ID Name     Seller ID  Updated at
-- ----     ---------  ----------
1  First      3         2012-01-01 12:00:06
2  Second     3         2012-01-01 12:00:07
3  Third      4         2012-01-01 12:00:08
4  Fourth     4         2012-01-01 12:00:09
5  Fifth      5         2012-01-01 12:00:10

以产生以下结果:

ID
---
5
4
2
3
1

此 sqlfiddle 中演示的一个选项是

select subq.*
  from (
    select rank() over (partition by seller_id order by updated_at desc) rnk,
           p.*
      from products p) subq
 order by rnk, updated_at desc;

相关内容

  • 没有找到相关文章

最新更新