請教一個sql 語法的問題,我使用MS SQL SERVER
目前我的資料大致狀況如下:
ID | 名字 | 排名 | 公司 |
---|---|---|---|
103 | OOO | 3085 | 大理A公司 |
103 | AAA | 101 | 大理A公司 |
103 | AAC | 1056 | 大理A公司 |
124 | AAD | 374 | 士林B公司 |
124 | AAE | 1272 | 士林B公司 |
124 | AAF | 1329 | 士林B公司 |
這是我已經group by後的結果,請問接下來我要使用那些SQL 語法才可以取得「大理A公司」排名最小的,以及「士林B公司」排名最小的呢?
若還有不清楚之處,可以提出來,我可以將我的問題補充,謝謝
請各位前輩賜教,謝謝!
懶的用MS SQL開測試資料庫,這語法是sqlite3的,不過基本大同小異。
select
ID,
NAME,
公司,
min(排名) as 最小排名
from 'test'
group by 公司
把你組出的SQL語法結果視為一個表格
再去搜尋這個表格
SELECT A.ID,A.名字,MIN(A.排名),A.公司
FROM(
你組出那個表格的SQL語法
) A
GROUP BY A.ID,A.公司
SELECT [Id], MIN([排名]), [公司]
FROM (篩選結果) AS a
GROUP BY [公司], [Id]
使用ROW_NUMBER()
請參考:https://social.msdn.microsoft.com/Forums/zh-TW/e7a713e4-2927-4b62-86f8-d586a25c71f8