一道Oracle子查詢小練習

2021-09-08 15:32:56 字數 1088 閱讀 4017

昨天晚上躺在床上看oracle(最近在學習這個),室友說出個題目讓我試試。題目如下:

有如下表結構,請選擇出成績為前三名的人的資訊(如果成績相同,則算並列),表名為test:

name                      grade

-------------------- ----------

kate                            80

jenny                          80

daring                         85

agony                         85

***                            90

yyy                             60

昨天大概想了下可以從以下幾點考慮實現:

1、首先肯定要進行排序

2、子查詢

3、由於oracle中沒有topn,所以只能考慮用rownum偽列

4、由於可以有重複的成績,考慮用distinct或者分組

經過測試,我的答案如下:

select  *  from test

where  grade  in (

select grade from (

select distinct grade from test

order by grade desc

where rownum

< 4

order by grade desc;

或select  *  from test

where  grade  in (

select grade from (

select  grade from test

group by grade

order by grade desc

where rownum

< 4

order by grade desc;

上面兩種方法,思路大致差不多,只不過上面的用distinct關鍵字過濾重複,下面的方法用分組的方法實現。實現思想基本沒變。

一道oracle試題

做不出來時感覺好難啊,思路千千萬,就是沒想到用 order by 和 rownum 題目如下 有下面三個表 商品product 商品號productid,商品名productname,單價unitprice,商品類別category,商provider 顧客customer 顧客號customeri...

一道互動練習題

的做法 考慮逐位確定 對於每個位置,往後列舉有沒有位置可以使得正確位置更多,如果有,那麼有兩種情況,1是這個位置被放到了正確的位置,2是這個位置本來應該放的數被放來了 這裡的重點是我們需要區分1和2 具體的做法是記下讓這個位置答案正確位置數變大的2個位置,將其和i一起移位 這裡是手繪示意圖.即把p1...

一道fft練習題

考場上想到的o n 2 o n 2 o n2 暴力 記f i j f i j f i j 表示前i個位置,長度為j的連擊出現的期望次數 記g i j g i j g i j 表示第到i個位置為止,目前連擊次數為j的概率 轉移時有一些細節 include using namespace std con...