資料庫 TOP N 問題

2021-06-23 01:07:55 字數 1183 閱讀 8674

簡單地說,top n問題就是:在select中,僅選擇按照某(些)列排序後top n的紀錄. 考慮到等值問題,又可以分為兩種: 一是僅僅返回n條紀錄(m 1), 二是還包括所有於第n條等值的紀錄(m 2). 當然最內層的子查詢也可以有其他的子句, 或者top n也可以應用在沒有order by的情況下,這樣更簡單. 

1. sql server 7: 用 top n (with ties) 

m1: 

select top n * from mytable order by ord_col; 

m2: 

select top n with ties * from mytable order by ord_col; 

注: sql server 7提供了percent n with ties, access 中提供了top n,但含義是m 2. 

2. oracle 8i: 用 rownum<=n 

m1: 

select * from 

( select * from mytable order by ord_col desc) 

where rownum<=n 

m2: 

select * from mytable where ord_col>= 

(select min(ord_col) from 

( select * from mytable order by ord_col desc) 

where rownum<=n) 

order by ord_col desc 

注意以下兩種錯誤用法: 

wrong 1: 

select * from mytable 

where rowid<=n 

order by ord_col desc; 

wrong 2:(因為where rownum<=n 在order by 前執行) 

select * from mytable 

where rownum<=n 

order by ord_col desc; 

3: db2 

用fetch first n rows only 

m1: 

select * from mytable 

order by ord_col desc 

fetch first n rows only 

分組Top N 問題

今天面試,面試官給了這樣乙個場景 有兩張表,一張表存放車隊id,班組id,司機id 另一種表存放司機id,運營時間,運營里程 要查詢出7月份每個車隊每個班組裡的 top 3 這就要用到row number 函式 首先按需求建兩張表 create table demo of topn car comp...

資料庫問題

資料庫問題 delphi windows sdk api 怎樣將兩個.dbf資料庫檔案,匯入到乙個表裡?在sql中有乙個叫企業管理器的東西.找到它然後找到你的目標資料庫,滑鼠右鍵有個匯入資料,裡面有個選項叫 使用一條查詢語句匯入.然後你就在這個查詢語句中寫一條sql命令,該命令同時查兩張表,但是只會...

資料庫問題!!

怎麼合併成乙個?這麼寫可以 select model,price from pcs where model in select model from products where maker b union select model,price from laptops where model in...