0

出力を取得できないクエリがあります。以下は実行されるクエリです

Q: 2. 最大数の車両が関連付けられている都市の名前、ID、およびカウントを検索するクエリを作成します。

ここで、Given は、クエリを実行する必要がある 1 つのテーブルです。

Vehicle_Detail_ID   City_ID
56                    242
57                    242
58                    242
59                    243
60                    241
61                    242
62                    245

都市名を持つ別のテーブル

City_ID City_Name
242          Bangalore
243          ChamarajNager
241          Bellary
245          Chitradurga

期待される出力:

City_ID No_Vehicles
242          4

正しい出力を取得するクエリの書き方を教えてください。

以下は、都市 ID とその車両数を取得するクエリです。試した:

SELECT c.city_id, COUNT(c.City_ID) AS NO_vehicles
  FROM city c, vehicle_details v 
 WHERE c.City_ID = v.City_ID
 GROUP BY c.City_ID

実際の出力

City_ID No_Vehicles
242             4
243             1
241             1
245             1

期待される出力に示されているように、これらの最大値を取得するのを手伝ってください。

4

5 に答える 5

1

//ソリューション1

Select top 1 v.cityID,count(*) as c 
from tblVehicle as v 
group by cityID
order by c desc

//cityNameを使用したソリューション2

Select top 1 a.cityID,a.cityName,Count(*) as c 
from tblCity as a
inner join tblVehicle as b
    on a.cityID=b.cityID
group by a.cityID,a.cityName
order by c desc
于 2012-11-06T03:04:48.030 に答える
0
CREATE TABLE V_ddetails(Vehicle_Detail_ID int,City_ID int)
INSERT INTO V_ddetails 
VALUES(56,242),(57,242),(58,242),(59,243),(60, 241),(61,242),(62,245)

CREATE TABLE city(City_ID int, City_Name varchar(50))

INSERT INTO city
VALUES(242,'Bangalore'),(243,'ChamarajNager'),(241,'Bellary'),(245,'Chitradurga')

select top 1 v.City_ID,COUNT(*) as No_Vehicles from V_ddetails v inner join city c
on v.City_ID =c.City_ID 
group by v.City_ID 
order by No_Vehicles desc
于 2012-07-26T09:30:31.657 に答える
0

パーティション関数とCTEを使用すると、これをON FIDDLEで実行できると思います

CREATE TABLE V_details(Vehicle_Detail_ID int,City_ID int) 
INSERT INTO V_details  
VALUES
(56,242),
(57,242),
(58,242),
(59,243),
(60, 241),
(60, 241),
(60, 241),
(60, 241),
(61,242),
(62,245)  

CREATE TABLE city(City_ID int, City_Name varchar(50))  
INSERT INTO city 
VALUES
(242,'Bangalore'),
(243,'ChamarajNager'),
(241,'Bellary'),
(245,'Chitradurga') 




   ;with initdata_cte as  
(     
  SELECT              
  c.city_id             
  , COUNT(c.City_ID) AS NO_vehicles                
  , RANK() over (order by c.city_id) rnk     
  FROM city c, V_details v        
  WHERE c.City_ID = v.City_ID       
  GROUP BY c.City_ID  
) 
, rnk_cte as 
(     
  SELECT              
  city_id             
  , NO_vehicles                
  , RANK() over (order by NO_vehicles desc) rnk     
  FROM initdata_cte     
) 
select * from rnk_cte where rnk =1 
于 2012-07-26T11:45:53.843 に答える
0

試す

select TOP 1 c.city_id,COUNT(c.City_ID) as NO_vehicles 
from city c,vehicle_details v 
where c.City_ID=v.City_ID 
group by c.City_ID.
于 2012-07-26T09:22:44.150 に答える
-1
CREATE TABLE V_ddetails(Vehicle_Detail_ID int,City_ID int)
INSERT INTO V_ddetails 
VALUES(56,242),(57,242),(58,242),(59,243),(60, 241),(61,242),(62,245)

select City_ID,COUNT(*) as No_Vehicles  from V_ddetails 
where city_id=242
group by City_ID 
于 2012-07-26T09:22:25.330 に答える