获取最多重复值的SQL过程

获取最多重复值的SQL过程,sql,oracle,plsql,oracle-sqldeveloper,Sql,Oracle,Plsql,Oracle Sqldeveloper,我有以下表格: table Guy{ ID integer PK, Country varchar(50) } table Activity{ id_Act integer PK, Guy_ID FK, Date_Act date } 他们的关系是一对梅(男人对活动)。此外,这张表是编好的,如果有错误,请向我道歉 现在,我想知道,在哪几年里,来自“XPTO”国家的人用程序完成的活动最多 这里最好的选择是什么?(使用Oracle SQL、PL SQL) 编辑: 我从这个查询开

我有以下表格:

table Guy{
  ID integer PK,
  Country varchar(50)
}
table Activity{
  id_Act integer PK,
  Guy_ID FK,
  Date_Act date
}
他们的关系是一对梅(男人对活动)。此外,这张表是编好的,如果有错误,请向我道歉

现在,我想知道,在哪几年里,来自“XPTO”国家的人用程序完成的活动最多

这里最好的选择是什么?(使用Oracle SQL、PL SQL)

编辑:

我从这个查询开始计算repetead值。经过这一步,我不知道该怎么办

 Select to_char(A.Date_Act, 'YYYY'), count(to_char(A.Date_Act, 'YYYY')) AS conter
 from GUY G, ACTIVITY A
 where G.ID = A.GUY_ID AND G.COUNTRY = 'XPTO'
 GROUP BY A.Date_Act;

您需要按功能分组:

Select to_char(A.Date_Act, 'YYYY'), count(A.id_Act) AS conter
from GUY G join ACTIVITY A on G.ID = A.GUY_ID
where G.COUNTRY = 'XPTO'
GROUP BY to_char(A.Date_Act, 'YYYY');
要获得活动最多的年份,可以使用分析函数:

select yr, conter from
    (Select to_char(A.Date_Act, 'YYYY') AS yr, count(A.id_Act) AS conter,
           rank() over (order by count(A.id_Act) desc) rnk
    from GUY G join ACTIVITY A on G.ID = A.GUY_ID
    where G.COUNTRY = 'XPTO'
    GROUP BY to_char(A.Date_Act, 'YYYY')
    ) 
where rnk=1;

如果只需要一行,可以使用行号而不是排名。

为什么不使用简单的查询?您只需要使用
count()
分组方式
,以及
按计数排序(某物)说明
要求执行一个过程,但这不是问题所在。我的问题是要得到最终的表(以及得到它的查询),使用我在前面的评论中提供的想法,尝试编写查询。如果有效,将其放入程序中。如果没有,请编辑您的问题,包括您尝试的解决方案,并说明为什么它不工作编辑。。。那个代码并不完全正确。在group by中给出了一个错误,但我也不知道如何修复它。为什么要使用伪代码?没有它,生活就够艰难的了!这正是我想要的!非常感谢。谢谢你花时间回答我。