选择具有最大值的行,其中两列中的值相同

aso*_*uzz 4 sql sql-server-2008

我有一个像这样的简单表

....................................
| hotelNo | roomType | totalBooking |
....................................
| 1       | single   |    2         |
| 1       | family   |    4         |
| 2       | single   |    3         |
| 2       | family   |    2         |
| 3       | single   |    1         |
.....................................
Run Code Online (Sandbox Code Playgroud)

现在我想获得每个酒店最常预订的roomType,即以下结果

......................
| hotelNo | roomType |
......................
|  1      | family   |
|  2      | single   |
|  3      | single   |
......................
Run Code Online (Sandbox Code Playgroud)

PS我使用子查询来获取第一个表

Gor*_*off 5

如果你想要最大值,你可以使用窗口函数:

select hotelNo, roomType
from (select t.*, row_number() over (partition by hotelNo order by totalBooking desc) as seqnum
      from table t
     ) t
where seqnum = 1;
Run Code Online (Sandbox Code Playgroud)