請問SQL語法~分組前三大怎麼寫?

有一個資料庫SQLITE

想取分組前三大的語法,以下是我寫的語法,但是只會取出全部的前三名,而非分組前三名,請高手指點,網路爬文很久,找不到適合的,因為我用SQLITE資料庫

select * from 購物表 group by 公司,人名order by 購買金額 desc limit 3

因為資料庫筆數眾多,僅以此表代表之


請問SQL語法~分組前三大怎麼寫?

公司 人名 購買金額
A 王一 100
A 王二 199
A 王三 250
A 李一 120
A 李二 1000
A 李三 180
A 陳一 300
B 趙一 15
B 趙二 250
B 林一 188
B 林二 450
B 林三 750
B 林四 11

想找出
公司 人名 購買金額
A 李二 1000
A 陳一 300
A 王三 250
B 林三 750
B 林二 450
B 趙二 250
2014-01-14 23:44 發佈
文章關鍵字 sq SQL 語法

joey0415 wrote:
有一個資料庫SQLI...(恕刪)


不知道有沒有類似 MS SQL 的 Row_Number()

http://msdn.microsoft.com/zh-tw/library/ms186734.aspx
Nikon D90(MB-D80) + 17-55 + 28-70 + N35.2 + N50.4 + SB-800(SD-8A) + T124
用or 和 公司 = a 不知行不行

不過要事先知道公司名

Rone_Chen wrote:
不知道有沒有類似 M...(恕刪)


沒有類似 MS SQL 的 Row_Number()

所以才請教大家

謝謝
SELECT list1.*
FROM 購物表 list1
WHERE ( SELECT count(1)
FROM 購物表 list2
WHERE list2.公司 = list1.公司 AND
list2.購買金額 >= list1.購買金額 ) <= 3
GROUP BY list1.公司,list1.人名
ORDER BY list1.購買金額

類似這樣哩? 雖然我不是很喜歡子查詢,但是這樣比較直覺

askaru wrote:
SELECT lis...(恕刪)


謝謝您的語法,不過我的資料量很多,要先group by 公司與人名 後再計算,所以不太合用

謝謝您的幫忙
1. 先create table t(comp,name,amt); --公司,姓名,金額
2. 語法: select * from (select t2.*, (select count(*) from t as t1 where t1.amt >= t2.amt group by t1.comp order by t1.amt) as idx from t as t2) where idx between 1 and 3 order by comp,idx;
My Blog http://blog.xuite.net/icydream/feeling/
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?