0

我有一个无法获得输出的查询。下面是要执行的查询

Q: 2. 写一个查询来查找获得最大关联车辆数的城市名称、ID 和计数。

现在,Given 是应该在其上执行查询的一张表。

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

尝试

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 回答
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,您可以在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 回答
-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 回答