题目如下,如何对对每个省中的市进行uv排序?
想要的结果市:
省 | 市 | uv |
---|
广东 | 深圳 | 4000 |
广东 | 广州 | 3000 |
广东 | x | 2000 |
类似这个样子的表结构 | | |

我使用的是HQL语言:解决这个问题非常简单
- 将uv_tbl join money_tbl on pron
- 使用开窗函数将相同省份的表放到一个窗口中,然后根据uv进行排名,再来个RANK()函数直接附带上排名,完美解决,基本伪HQL编写(我意思一下,可别照抄,只是表达思想)如下所示
SELECT *,RANK() OVER(PARTITION BY t1.prov ORDER BY t1.uv DESC) FROM (uv_tbl join money_tbl)t1
即可完成
其他SQL个人的解决方案也有partition这种函数吧...