1
多次嘗試此查詢,覺得我只是想念一些簡單的東西。MS-Access SELECT TOP N子查詢SQL
這個例子:aggregation subquery with top N已經接近我想要完成的事情,但是我並不想平均距離,而只想返回前N個距離和shopID。
在我的數據中,數值類似於數字分數,數值越高越差。我的目標是獲得一個列表,顯示每個StationId中排名前2的最差評分SubTypeNames及其得分。
我的試樣臺:(複合PK:的stationID和SubTypeId)
StationId | SubTypeId | SubTypeName | Value
STA001 | 1 | TypeA | 4.63
STA001 | 2 | TypeB | 2.57
STA001 | 3 | TypeC | 3.54
STA001 | 4 | TypeD | 4.19
STA001 | 5 | TypeE | 1.61
STA002 | 1 | TypeA | 5.12
STA002 | 2 | TypeB | 4.57
STA002 | 3 | TypeC | 1.28
STA002 | 4 | TypeD | 1.27
STA002 | 5 | TypeE | 3.33
STA003 | 1 | TypeA | 4.51
STA003 | 2 | TypeB | 4.51
STA003 | 3 | TypeC | 5.63
STA003 | 4 | TypeD | 1.28
STA003 | 5 | TypeE | 3.25
此模式重複爲50+站。
我UPDTAED輸出:(從查詢如下所示)
StationId | SubTypeName | Value
STA001 | TypeA | 4.63
STA001 | TypeD | 4.19
STA002 | TypeA | 5.12
STA002 | TypeB | 4.57
STA003 | TypeC | 5.63
STA003 | TypeA | 4.51
STA003 | TypeB | 4.51
我最近嘗試:
SELECT c.StationId, c.SubTypeName, c.Value
FROM [TT: StationSubType Values] As c
WHERE c.SubTypeId IN
(SELECT TOP 2 c2.SubTypeId FROM [TT: StationSubType Values] As c2 WHERE c2.StationId = c.StationId
ORDER BY c2.Value DESC)
ORDER BY c.StationId ASC, c.Value DESC;
UPDATE:我上面的查詢預期ALMOST工作。仍然存在的問題是由於在同一個電臺上的重複值與他們評論中預示的人相同。 爲了這個查詢的目的,我只需要TOP N,是否有一種方法可以將n個結果的第一個SubTypeId與相等的值進行比較?
任何幫助將不勝感激。謝謝!
不,在這種情況下,Value包含數字分數,其中較高的值是不好的。因此,我們的目標是顯示Station的兩個最差評分子類型。對不起,我不清楚,我已經編輯帖子相應地添加該上下文。 – aaronlee 2014-11-24 15:02:37
您的表格設計是否允許同一* StationId *的重複*值*值?例如,它是否允許帶有* StationId STA001 *和* Value * 4.63的另一行? – HansUp 2014-11-24 15:24:42
是的,這是可能的。但是,它將針對不同的SubTypeId,因爲該表具有組合PK。 – aaronlee 2014-11-24 15:45:14