You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中DENSE_RANK始终返回1?如何获取各国最受欢迎订阅类型

修正SQL以获取每个国家最受欢迎的Netflix订阅类型

你的SQL中DENSE_RANK的排序逻辑存在错误:ORDER BY子句里的(SELECT COUNT(*) as count_subscription FROM netflix)是计算整个表的总记录数,每个分组的这个值完全相同,因此所有行的排名都会被标记为1,导致每个国家返回所有订阅类型。

修正后的SQL语句

SELECT Country, Subscription_Type, count_subscription
FROM (
    SELECT Country,
            Subscription_Type, 
            COUNT(*) as count_subscription, 
            DENSE_RANK() OVER (PARTITION BY Country ORDER BY COUNT(*) DESC) as `rnk`
    FROM netflix
    GROUP BY Country, Subscription_Type
) as subscription_rank
WHERE rnk = 1;

逻辑说明

  • 内层查询先按Country和Subscription_Type分组,计算每个国家每种订阅类型的用户数count_subscription
  • DENSE_RANK()函数按Country分区,再根据count_subscription降序排序,这样每个国家里订阅数最多的类型排名为1
  • 外层筛选出排名为1的记录,得到每个国家最受欢迎的订阅类型(如果有多个类型订阅数相同,会同时返回并列结果)

如果需要强制每个国家只返回一行(并列时任选其一),可以将DENSE_RANK()替换为ROW_NUMBER(),但此操作会丢失并列的订阅类型信息,需根据实际需求选择。

内容的提问来源于stack exchange,提问作者Shayma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 06:53:16