2013-09-16 8 views
0

我在不同的組中具有相同類型的項目。我必須找到每個項目最多的組。第一SQL - 在多行之間選擇最大值

第一件事,這裏是數據:

Count_of_Items | Group_ID | Item_Type 

15|01|A 
35|02|A 
25|03|A 
3|01|B 
5|04|B 

等等

在這種情況下,02組有A類項目數量最多(35)和組04有類型B項目的最高數量。

我試圖

select max(count_of_items), Group_ID , item_type 
     from foo 
    group by Group_ID, item_type 

,但沒有奏效。

非常感謝您的幫助。

* 使用MS SQL Server 2005的

+0

你能儘量只組ID由分組? – Misha

+1

如果兩個或多個組對同一個項目類型具有相同的料品計數值,應該選擇什麼?另外:你可以在[SQLFiddle](http://sqlfiddle.com/)上提供一個小提琴嗎? –

+0

僅通過group_id進行分組無效,它會產生比我需要的更多的輸出;我想我應該更清楚。 – AfterWorkGuinness

回答

1

試試這個,應該工作

select f.* 
from foo as f inner join 
maxforGroup(
    select max(count_of_items) maxC, item_type 
    from foo 
    group by item_type 
) as m 
on f.Count_of_Items=m.maxC and f.item_type =m.item_type 
+0

謝謝,作品(注意,我確實必須刪除maxforGroup既不SQL Server 2005也不MySql 5.5.32喜歡它) SQL小提琴:http://sqlfiddle.com/#!2/afdea/8/0 (以前從未聽說過SQL小提琴,真的很整潔) – AfterWorkGuinness

+0

@AfterWorkGuiness請注意,如果兩個或更多不同的組對這種類型具有相同的項目計數,則此解決方案將導致多個相同項目類型的行。參見[你的小提琴的更新版本](http://sqlfiddle.com/#!2/19cbf/1)。這可能是理想的結果,但是這個問題不能被告知。 –

+0

謝謝;這不是理想的結果,但我打算圍繞此查詢來選擇最小組ID。 – AfterWorkGuinness