2017-05-04 34 views
0

這是問題#105 http://sql-ex.ru查詢獲取某列的另一列的,因爲只有RANK()值最高ROW_NUM()值

這是數據庫模式:Database Schema

問題: 統計學家愛麗絲,貝蒂,卡羅爾和戴安娜在產品表中編號行。 最初,他們按照製造商名稱的升序對錶格行進行排序。 Alice正在爲每一行分配一個新數字,這樣她就按照模型升序排列了同一個製造商的行。 另外三位統計人員將相同的編號分配給同一製造商的所有行。

  • 貝蒂分配從1開始的號碼,每下一個製造商1。

  • 卡羅爾給出了這樣數目的製造商,它數艾麗斯將給出本機的第一模型的數量增加。

  • 戴安娜給了一個製造商,這個數字愛麗絲會給這個製造商的最後一個模型。

輸出:製造商,型號,已經由愛麗絲,貝蒂,Carol和戴安娜分別分配給表中的行數。

我想出了這個查詢已經愛麗絲(A),貝蒂(B),卡羅爾(C)

SELECT maker, model, 
ROW_NUMBER() OVER (ORDER BY maker,model ASC) A, 
DENSE_RANK() OVER(ORDER BY maker) B, 
RANK() OVER (ORDER BY maker) C 
FROM product 
ORDER BY model ASC 

但我無法找到黛安娜(d)中溶液。

根據該網站,這是結果的正確的查詢應該給: Results a correct query should give

感謝您的幫助,時間和理解。

+2

的MySQL不必須'ROW_NUMBER()'或'RANK()' –

回答

2
SELECT 
     (SELECT COUNT(*) 
     FROM product T2 
     WHERE T2.[maker] <= T1.[maker]) as D 
FROM product T1 

example

+0

非常感謝您的回答,它的工作...但你能向我解釋背後的邏輯請問?我無法圍繞它進行考慮^ _ ^「 – avarus

+0

檢查示例。我要計算我的組和所有以前的組中的所有元素。 –

相關問題