2017-11-21 8 views
0

ほとんどの支店数を持つ都市名を取得しようとしました。最も多くの支店数を持つ都市名を表示

select C.City_name ,count(B.B_Name) 
from tblcity C 
inner join 
tblBranch B 
on c.city_id=B.City_id 
group by C.City_name 
order by count(B.B_Name) desc 

上記のコードは、特定の都市の支店数を示します。

SELECT 
    City_Name, cnt 
FROM 
(
    SELECT 
     c.City_name, 
     COUNT(b.B_Name) cnt, 
     DENSE_RANK() OVER (ORDER BY COUNT(b.B_Name) DESC) dr 
    FROM tblcity c 
    INNER JOIN tblBranch b 
     ON b.city_id = c.City_id 
    GROUP BY c.City_name 
) t 
WHERE dr = 1; 

がここに別のオプションになりTOP 1 WITH TIESを使用する: 私はあなたのクエリ

select TOP 1 C.City_name ,count(B.B_Name) 
from tblcity C 
inner join 
tblBranch B 
on c.city_id=B.City_id 
group by C.City_name 
order by count(B.B_Name) desc 
+3

あなたは 'SELECT TOP 1 ...'が必要だと思いますか? –

答えて

2

使用DENSE_RANK()TOP 1を追加することができます

+0

Tim Biegeleisen –

+0

c.city = b.city_id –

3

枝のほとんどの数を持っている都市名を取得するために解決を支援してくださいこれはSQL Server固有のものです。

+0

トップ1はトップの結果を1つ与えます。他の都市も同じ数を持つことができます。 –

+0

@sampathacharyaこの場合、「TOP 1 WITH TIES」を使うことができます。しかし、依然として高密度ランクを使用するための議論がある。もしもあなたが二番目に高いなどを得たいなら、 –

+0

@sampathacharya私はあなたの質問から、結果として一つの都市だけを望んでいることを理解しました。あなたが複数の質問をしたことがあるなら、私も一緒に追加することができます。正しい答えを得たい場合は、正しい質問をしてください。 –

関連する問題