【发布时间】:2021-04-08 17:31:55
【问题描述】:
我有一张如下表:
| product | country | group | value |
|---|---|---|---|
| p1 | c1 | g1 | 5 |
| p1 | c1 | g2 | 6 |
| p1 | c2 | g1 | 3 |
| p1 | c2 | g2 | 22 |
| p1 | c3 | g1 | 1 |
| p1 | c3 | g2 | 6 |
我想考虑每个产品国家组合的价值列中的总和来对它们进行排名。所以在这种情况下,更新后的表应该是这样的:
| product | country | group | value | rank |
|---|---|---|---|---|
| p1 | c1 | g1 | 5 | 2 |
| p1 | c1 | g2 | 6 | 2 |
| p1 | c2 | g1 | 3 | 1 |
| p1 | c2 | g2 | 22 | 1 |
| p1 | c3 | g1 | 1 | 3 |
| p1 | c3 | g2 | 6 | 3 |
p1-c1 组合将具有第二个种子,因为 value 列中的 5+6 高于 7 (1+6) 且低于 25 (22+3)。我使用了dense_rank() over (partition by product, country order by value),但它没有用。如何使用mysql创建上述排名?
谢谢,
【问题讨论】: