哪些数据库供应商支持 Aggregate Rank() 函数?

Which database vendors support Aggregate Rank() function?

我看过一些数据库供应商,到目前为止,似乎只有 Oracle 在这两种情况下都支持 rank() 函数;分析和聚合。

这是他们文档的 link:https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions123.htm

我看过 mySQL、Snowflake、e.t.c,但它们似乎都只支持分析 rank()。 有没有人在任何其他 RDBMS 的聚合上下文中使用排名,或者它通常是一种变通方法?

谢谢!

据我所知,目前(2018年4月)只有两个数据库将此功能实现为聚合:

Oracle --> 演示 --> http://sqlfiddle.com/#!4/74fa70/2

SELECT rank( 2 ) within group (order by x) as rank_x FROM qwe;

SELECT rank( 2 ) within group (order by y) as rank_y FROM qwe;

SELECT rank( 2, 7 ) within group (order by x,y)  as rank_x_y FROM qwe;

| RANK_X |
|--------|
|      5 |

| RANK_Y |
|--------|
|      2 |

| RANK_X_Y |
|----------|
|        7 |

PostgreSQL --> 演示 --> http://sqlfiddle.com/#!17/74fa7/5

SELECT rank( 2 ) within group (order by x) as rank_x FROM qwe;

SELECT rank( 2 ) within group (order by y) as rank_y FROM qwe;

SELECT rank( 2, 7 ) within group (order by x,y)  as rank_x_y FROM qwe;

| RANK_X |
|--------|
|      5 |

| RANK_Y |
|--------|
|      2 |

| RANK_X_Y |
|----------|
|        7 |

解析版rank() over,除了Oracle和PostgreSQL,也已经在SQL-Server、DB2、MySql中实现(即将发布)


这两个演示基于以下示例数据:

CREATE TABLE qwe(
  x int, y int
 );

insert into qwe values(1,1);
insert into qwe values(1,2);
insert into qwe values(1,3);
insert into qwe values(1,4);
insert into qwe values(2,5);
insert into qwe values(2,6);
insert into qwe values(3,7);