显示前三行

时间:2015-10-02 19:02:02

标签: oracle oracle11g

在我正在进行的学校作业中,我需要展示犯罪最多的3名罪犯。但是我遇到了一些问题

这是我到目前为止的代码及其输出:

`Select Last, First, Count(Crime_ID)
 From Criminals Natural Join crimes
 Group by Last, First, Criminal_ID
 order by Count(Crime_Id) Desc`

`LAST            FIRST      COUNT(CRIME_ID)
 --------------- ---------- ---------------
 Panner          Lee                      2 
 Sums            Tammy                    1 
 Statin          Penny                    1 
 Dabber          Pat                      1 
 Mansville       Nancy                    1 
 Cat             Tommy                    1 
 Phelps          Sam                      1 
 Caulk           Dave                     1 
 Simon           Tim                      1 
 Pints           Reed                     1 
 Perry           Cart                     1 

 11 rows selected `

我一直在玩ROWNUM,但当我将它包含在SELECT中时,由于我的GROUP BY而无法运行。但是如果你将ROWNUM放在GROUP BY中,它只需将所有内容分开。

我只想展示犯罪最多的前三名,这很奇怪,因为只有一个人有超过1个犯罪。从理论上讲,更多的罪犯将被添加到数据库中,但这些是分配中给出的表格。

1 个答案:

答案 0 :(得分:0)

select *
  from  
( Select Last, First, Count(Crime_ID)
 From Criminals Natural Join crimes
 Group by Last, First, Criminal_ID
 order by Count(Crime_Id) Desc ) 
 where ROWNUM <= 3;