我正在Google Cloud Platform中练习SQL,并且有一张桌子,上面有美国最受欢迎的名字。 我需要编写一个查询,该查询返回每年最受欢迎的名称。 该表有6列:ID,州,性别,年份,名称,名称出现的次数
到目前为止,我有:
SELECT DISTINCT year
FROM 'table'
但是我现在不知道接下来要做什么...
答案 0 :(得分:2)
您要查找的是统计信息中的mode
。一种实现方法是使用聚合和窗口功能:
select year, name
from (select year, name, count(*) as cnt,
row_number() over (partition by year order by count(*) desc) as seqnum
from t
group by year, name
) yn
where seqnum = 1;
如果存在最频繁的联系,则上述版本将返回一个任意名称。如果您确实想要联系,请使用rank()
而不是row_number()
。