sql两个表查询最重复的外键

时间:2014-03-18 11:33:01

标签: sql oracle

我得到了这两张表sportstudent

第一张表sport

|idsport |  name      |
_______________________  
|  1     | bobsled    |  
|  2     | skating    |  
|  3     | boarding   |  
|  4     | iceskating |  
|  5     | skiing     |  

第二张表student

                            foreign key
|idstudent |  name      |   sport_idsport
__________________________________________  
|  1       | john       |       3        |  
|  2       | pauly      |       2        |  
|  3       | max        |       1        |  
|  4       | jane       |       2        |  
|  5       | nico       |       5        |  

到目前为止,我这样做了它输出哪个数字大多是插入,但不能让它工作 有两张桌子

SELECT  sport_idsport 
FROM (SELECT sport_idsport FROM student GROUP BY sport_idsport ORDER BY COUNT(*) desc)  
WHERE ROWNUM<=1;

我需要输出最受欢迎的运动名称,在这种情况下它会滑冰。

我使用的是oracle sql。

2 个答案:

答案 0 :(得分:0)

select cnt, sport_idsport from (
  select count(*) cnt, sport_idsport
    from student
   group by sport_idsport
   order by count(*) desc
)
where rownum = 1

答案 1 :(得分:0)

with counter as (
    Select sport_idsport, 
           count(*) as cnt,
           dense_rank() over (order by count(*) desc) as rn
    from student 
    group by sport_idsport
)
select s.*, c.cnt
from sport s
 join counter c on c.sport_idsport = s.idsport and c.rn = 1;

SQLFiddle示例:http://sqlfiddle.com/#!4/b76e21/1