如何通过查看分类列[closed]同时遍历MYSQL中的列以得出前3个值

问题描述 投票:-3回答:1
如何根据利润列提取每个国家/地区的前3名客户ID? (屏幕截图_1供参考)

我尝试使用等级函数:rank () over (partition by table_1.name order by profit desc) as ranks,但是没有用。由于某种原因,它生成了重复的值。

有人可以帮我吗?预先感谢!

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9CMDBsWC5qcGcifQ==” alt =“屏幕截图1”>

mysql sql greatest-n-per-group
1个回答
1
投票
select * from ( select t.*, row_number() over(partition by country order by profit desc) rn from mytable t ) t where rn <= 3

如果您想允许联系(每个国家可能给您3个以上的客户),则可以使用rank()代替row_number()(其余查询保持不变)。

请注意,窗口功能仅在MySL 8.0中可用。
© www.soinside.com 2019 - 2024. All rights reserved.