昨天晚上躺在床上看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...