Sql 查找每个id的最常见值
我试过了,但是输出不是我需要的理想输出。此代码仅为我提供每年的不同值:Sql 查找每个id的最常见值,sql,sqlite,Sql,Sqlite,我试过了,但是输出不是我需要的理想输出。此代码仅为我提供每年的不同值: select distinct (year) year, most_frequent_value from ( SELECT year, genre AS most_frequent_value, count(*) as _count FROM Oscar GROUP BY year, genre) a ORDER BY year, _count DESC Wit行号()窗口函数: select t.year, t.g
select distinct (year) year, most_frequent_value from (
SELECT year, genre AS most_frequent_value, count(*) as _count
FROM Oscar
GROUP BY year, genre) a
ORDER BY year, _count DESC
Wit行号()
窗口函数:
select t.year, t.genre
from (
select year, genre,
row_number() over (partition by year order by count(*) desc) rn
from Oscar
group by year, genre
) t
where t.rn = 1
请参阅。结果: 如果您想在结果中取得联系,请使用
rank()
而不是row\u number()
Wit
row\u number()
窗口函数:
select t.year, t.genre
from (
select year, genre,
row_number() over (partition by year order by count(*) desc) rn
from Oscar
group by year, genre
) t
where t.rn = 1
请参阅。结果:
如果你想在结果中打成平局,请使用
rank()
而不是row\u number()
只要一个问题,为什么称之为t.year和t.genre。非常感谢它正在工作
t
是返回这些列的子查询的别名。在这种情况下,您可以全部省略它们,但使用它们是一种很好的做法,因为在某些情况下,您可能必须从特定子查询中显式选择一列,尤其是当存在同名列时。只有一个问题:为什么称它为t.year和t.genre。非常感谢它正在工作t
是返回这些列的子查询的别名。在这种情况下,您可以全部省略它们,但使用它们是一种良好的做法,因为在某些情况下,您可能必须显式地从特定子查询中选择一列,尤其是当存在同名的列时。