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

如何使用SQL GROUP BY子句找出语言多样性最高的发行年份?

修正SQL以获取语言多样性最高的发行年份

原SQL的问题分析

你提供的错误SQL存在核心逻辑偏差:

SELECT COUNT(DISTINCT release_year)
FROM films
GROUP BY release_year

按release_year分组后,每个分组内的release_year值唯一,因此COUNT(DISTINCT release_year)的结果永远为1,完全无法体现语言多样性的统计需求。

正确的SQL实现

语言多样性的核心是统计每个发行年份下不重复的语言数量,基于此需求,正确的SQL写法如下:

基础版(返回单个最高多样性年份)

SELECT release_year, COUNT(DISTINCT language) AS language_diversity
FROM films
GROUP BY release_year
ORDER BY language_diversity DESC
LIMIT 1;
  • COUNT(DISTINCT language):统计每个年份下的不重复语言数(自动忽略language为null的记录)
  • GROUP BY release_year:按发行年份分组计算
  • ORDER BY language_diversity DESC:按语言多样性从高到低排序
  • LIMIT 1:取排名第一的年份(若存在多个年份并列最高,仅返回其中一个)

进阶版(返回所有并列最高的年份)

如果需要获取所有语言多样性并列最高的年份,可使用窗口函数RANK():

WITH year_language_stats AS (
    SELECT 
        release_year, 
        COUNT(DISTINCT language) AS language_diversity,
        RANK() OVER (ORDER BY COUNT(DISTINCT language) DESC) AS rank_num
    FROM films
    GROUP BY release_year
)
SELECT release_year, language_diversity
FROM year_language_stats
WHERE rank_num = 1;
  • 先用CTE计算每个年份的语言多样性及对应排名
  • 筛选出排名为1的所有年份,解决并列最高的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:40:32