2014-01-15 3 views

답변

0

에서

SELECT * 
FROM (SELECT vehicle_make, COUNT(service_name) as num_of_services 
FROM StartingTable 
GROUP BY vehicle_make) 
WHERE num_of_services = (SELECT MAX(num_of_services FROM (SELECT vehicle_make, COUNT(service_name) as num_of_services 
FROM StartingTable 
GROUP BY vehicle_make)) 

감사합니다, 당신은 다음을 수행 할 수 있습니다

SELECT vehicle_make, num_of_services 
FROM (SELECT vehicle_make, COUNT(service_name) as num_of_services, 
      max(COUNT(service_name)) over() as max_num_of_services 
     FROM StartingTable 
     GROUP BY vehicle_make 
    ) st 
WHERE num_of_services = max_num_of_services; 

이 최대를 계산하는 윈도우 함수를 사용합니다. 집계 및 창 함수를 혼합하는 것은 처음에는 조금 이상하게 보입니다. 그러나 이것은 계산의 최대 값을 계산합니다. 이는 정확히 찾고있는 것입니다.

편집 :

당신은 단지 하나의 행하려면이는, 어쩌면 간단 할 수있는 또 다른 방법 :

SELECT top 1 vehicle_make, COUNT(service_name) as num_of_services 
FROM StartingTable 
GROUP BY vehicle_make 
ORDER BY COUNT(service_name) desc 
관련 문제