我有以下问题:
select
a.dormid, a.student_capacity, count(*) as num
from
(select
d.dormid,
d.dorm_name,
d.student_capacity,
h.amenid
from
(Dorm d left join Has_amenity h
on d.dormid=h.dormid)
) a
group by a.dormid, a.student_capacity
结果如下:
+--------+------------------+-----+
| dormid | student_capacity | num |
+--------+------------------+-----+
| 109 | 128 | 8 |
| 104 | 256 | 3 |
| 160 | 400 | 12 |
| 100 | 85 | 5 |
| 117 | 40 | 1 |
| 110 | 116 | 5 |
| 140 | 355 | 6 |
+--------+------------------+-----+
我只想得到具有最大“num”值的宿舍ID和学生容量行(但允许绑定,所以我不能将行限制为1)。
所以在这种情况下,返回
[160, 400, 12]
.
我该如何处理?我试过放
where num = max(num)
在代码之后,但那不起作用。我
使用
rank
函数和限制秩=1可能会有所帮助,但我不确定应该在哪里实现它。