2017-04-23 47 views
0

正如標題中所述,我只想顯示具有最大數字的行,對於這種情況,它的數字是4,並且沒有更少。僅顯示查詢中列的最大值meno - SQL

select divak.MENO,count(divak.MENO) 
    from sledovanost 
    natural join tv_stanice 
    natural join divak 
    group by divak.meno 
    order by count(divak.MENO)desc; 

My query

回答

0

您可以通過一個having -clause實現這一目標,在其中您比較每個MENO計數與最大MENO計數(由子查詢檢索):

select divak.MENO,count(divak.MENO) 
    from sledovanost 
    natural join tv_stanice 
    natural join divak 
    group by divak.meno 
    having count(divak.MENO) = (
     select (max(count(divak.MENO)) 
     from sledovanost 
     natural join tv_stanice 
     natural join divak 
     group by divak.meno) 

順便說一句:我的查詢變更爲join .. ON ..語法; natural join,它連接名稱相同的屬性的表,每當數據庫模式更改時,都有「無意的連接」的危險。

+0

非常感謝!這正是我想要的。 –

+0

從性能的角度來看,這不是最好的解決方案。 –

0

不要使用natural join。它使用列的名稱來匹配表,並且不顯示查詢中的名稱。這是一個等待發生的錯誤。使用USINGON

在Oracle中,你通常會做到這一點使用row_number()rank()取決於你是否不想重複:

with t as (<your query here but name the second column>) 
select t.* 
from (select t.*, rank() over (order by cnt desc) as seqnum 
     from t 
    ) t 
where seqnum = 1; 
0

我想他想要這樣一個:Result