首页 > 解决方案 > 如何获取结果列表中特定值的位置?

问题描述

在这里,我得到了按类型分组并按可用房间数量排序的酒店列表。

SELECT hotel_type, SUM(room_available) room_available FROM history WHERE hotel_name = 'anyHotel' GROUP BY hotel_type ORDER BY room_available DESC

我希望获得hotel_type='Classic'该列表中出现的第一行的位置(行数)。

我怎样才能做到这一点?

标签: mysql

解决方案


如果您正在运行 MySQL 8.0,则可以rank()使用子查询来执行此操作:

select *
from (
    select hotel_type, sum(room_available) room_available,
        rank() over(order by sum(room_available) desc) rn
    from history 
    where hotel_name = 'anyHotel' 
    group by hotel_type 
) t
where hotel_type = 'Classic'

推荐阅读