我正在尝试在MY SQL中学习Windows函数。我想知道的是,是否可以在from子句中使用查询来执行等级函数,如下面在MYSQL中所示。
SELECT s.classroom,rank()over(由s.cnt desc排序)row_no来自( 选择教室,count(*)为cnt 从清单 按教室分组)s;
是,您的查询是有效的SQL-假设您正在运行MySQL 8.0,因为早期版本不支持诸如rank()
之类的窗口函数。
但是,请注意,您实际上并不需要子查询。您可以直接在汇总查询中使用window函数:
select
classroom,
count(*) cnt,
rank() over(order by count(*) desc) row_no
from list
group by classroom