2015-09-19 61 views
0

這裏是我的表的Oracle SQL返回行相同的最高值

------------------ 
|__fruit__|_color_| 
| banana | yellow| 
| lemon | yellow| 
| apple | red | 
| cherry | red | 
| lime | green |  

從查詢的輸出應該是:

yellow, banana 
yellow, lemon 
red, apple 
red, cherry 

我想用的最大量返回水果顏色數。由於紅色和黃色都具有相同的最大顏色量,所以我沒有能夠得到它們兩者。 我嘗試過使用distinct關鍵字,並嘗試使用count不同的聚合函數,但只能返回一種顏色。

+0

請分享你有什麼到目前爲止已經試過。 – EvilTeach

回答

1

你必須group by顏色和join它到原始表來獲得所需的結果。

Fiddle

with cnts as (select color,count(*) as cnt 
from tablename 
group by color) 
, maxcnt as (select max(cnt) as mxcnt from cnts) 
select t.color,t.fruit 
from cnts c join maxcnt m on c.cnt = m.mxcnt 
join tablename t on t.color = c.color 
+0

編輯過的版本只返回紅色而不是黃色,對於初學者來說更令人困惑。 –

+1

早期的版本..顯式地返回所有count的count爲1的行。但是,對於修改後的版本,只有在有最大計數的顏色行時,這是您的問題。另外,爲了您的理解,我在小提琴中添加了更多行 –