sql—是否可以在mysql中的查询之上运行rank函数

uqxowvwt  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(267)

我正在努力学习我的sql中的windows函数。我想知道的是,如果我可以使用from子句中的查询来执行rank函数,就像我在mysql中展示的那样。

SELECT s.classroom
     , rank() over ( order by s.cnt desc) row_no
  from (
select classroom,count(*) as cnt
  from list
 group 
    by classroom
)s;
vd2z7a6w

vd2z7a6w1#

是的,您的查询是有效的sql—假设您运行的是MySQL8.0,因为早期版本不支持窗口函数,例如 rank() .
但是,请注意,您实际上不需要对此进行子查询。可以在聚合查询中直接使用窗口函数:

select
    classroom,
    count(*) cnt,
    rank() over(order by count(*) desc) row_no
from list
group by classroom

相关问题