2
나는 vehicle make, service_name이있는 테이블을 가지고 있으며 가장 많이 발생하는 차량을 찾아야합니다. 작동하는 쿼리가 있지만 새 테이블을 만들지 않고 동일한 결과를 얻는 더 쉬운 방법이 있는지 알고 싶습니다. 가 여기 내 쿼리를 SQL Server를 사용하는 경우 사전가장 많이 발생하는 속성을 가진 행을 찾으려면 어떻게합니까?
나는 vehicle make, service_name이있는 테이블을 가지고 있으며 가장 많이 발생하는 차량을 찾아야합니다. 작동하는 쿼리가 있지만 새 테이블을 만들지 않고 동일한 결과를 얻는 더 쉬운 방법이 있는지 알고 싶습니다. 가 여기 내 쿼리를 SQL Server를 사용하는 경우 사전가장 많이 발생하는 속성을 가진 행을 찾으려면 어떻게합니까?
에서
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
을