- **为什么需要子查询(sub)?**  
     在SQL中,窗口函数(如`ROW_NUMBER()`)会为每一行计算一个值(这里是为每个月每首歌计算一个排名)。但是,我们不能在同一个SELECT语句的WHERE子句中直接使用这个窗口函数的结果(因为执行顺序:WHERE在窗口函数之前执行)。所以,我们需要将窗口函数放在子查询中,然后在外部查询中过滤(`WHERE sub.ranking <= 3`)。

   - **GROUP BY的作用**:将数据按指定字段分组,然后对每个组应用聚合函数(如COUNT(*))。SELECT子句中出现的非聚合字段,必须出现在GROUP BY子句中(或使用聚合函数包裹)。所以这里的song_name必须出现在group by子句当中
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 11:31
点赞 评论 收藏
分享
06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
合不合适,我自己说了才算
码农索隆:hr:“真执着啊,来我公司当法人吧”
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务