iT邦幫忙

0

MSSQL(如何將分群後的資料取得最小值)

請教一個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公司」排名最小的呢?

若還有不清楚之處,可以提出來,我可以將我的問題補充,謝謝

請各位前輩賜教,謝謝!

klm2242 iT邦研究生 1 級 ‧ 2017-06-12 11:45:08 檢舉
補充…我剛剛已使用order by語法,將各分群後的結果由小到大排序,若我想取每個群組的第一筆資料,也就是最小資料,該如何做呢?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
froce
iT邦大師 1 級 ‧ 2017-06-12 11:38:10

懶的用MS SQL開測試資料庫,這語法是sqlite3的,不過基本大同小異。

select 
    ID,
    NAME,
    公司,
    min(排名) as 最小排名
from 'test'
group by 公司
klm2242 iT邦研究生 1 級 ‧ 2017-06-23 14:43:17 檢舉

謝謝

0
cliff_chen
iT邦新手 4 級 ‧ 2017-06-12 15:19:23

把你組出的SQL語法結果視為一個表格
再去搜尋這個表格

SELECT A.ID,A.名字,MIN(A.排名),A.公司
FROM(
你組出那個表格的SQL語法
) A
GROUP BY A.ID,A.公司
klm2242 iT邦研究生 1 級 ‧ 2017-06-23 14:43:27 檢舉

謝謝

0
小魚
iT邦大師 1 級 ‧ 2017-06-14 00:45:38
SELECT [Id], MIN([排名]), [公司] 
FROM (篩選結果) AS a
GROUP BY [公司], [Id]
klm2242 iT邦研究生 1 級 ‧ 2017-06-23 14:43:37 檢舉

謝謝

0
im47
iT邦新手 3 級 ‧ 2017-06-14 13:24:14

使用ROW_NUMBER()
請參考:https://social.msdn.microsoft.com/Forums/zh-TW/e7a713e4-2927-4b62-86f8-d586a25c71f8

klm2242 iT邦研究生 1 級 ‧ 2017-06-23 14:43:53 檢舉

謝謝

我要發表回答

立即登入回答