2017-03-24 1 views
0

저는 MSSQL의 초등 사용자입니다. 내 쿼리를 제대로 끝낼 수 없습니다. 간단한 문제 여야합니다. 이 작업을 수행MSSQL에서 간단한 쿼리. SELECT

SELECT Pass_in_trip.date, Count(date) as numbOfPassengers 
From Pass_in_trip, Trip 
WHERE (Trip.trip_no = Pass_in_trip.trip_no AND Trip.town_from='Rostov') 
Group BY date 
HAVING COUNT(date) = 3 

이 방법 :

여기 내 코드입니다. 하지만 MAX (COUNT (일))와 COUNT (날짜)를 비교하려면 다음 나는 문제가 얻을 :

가 집계 또는 하위 쿼리가 포함 된 식에서는 집계 함수를 수행 할 수 있습니다.

+3

[이용 명시 적 조인 (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins.aspx) – scsimon

+0

으로 시작하십시오. 문제를 올바르게 설명하고 있지 않습니다. max (count())는 무엇을할까요? 그룹을 가지고 있기 때문에, 카운트는 단지 하나의 값이며, 최대 값을 가짐으로써 여전히 같은 숫자가됩니다. –

답변

1

나는 이것이 당신이 찾고있는 것이라고 생각합니다.

공통 테이블 식을 사용하면 쿼리를 반복하지 않아도됩니다.

WITH cte as 
    (
    SELECT Pass_in_trip.date, Count(date) as numbOfPassengers 
    FROM Pass_in_trip 
    INNER JOIN Trip 
     ON Trip.trip_no = Pass_in_trip.trip_no 
    WHERE Trip.town_from='Rostov' 
    GROUP BY date 
) 
SELECT date, numbOfPassengers 
FROM cte 
WHERE numbOfPassengers = (SELECT MAX(numbOfPassengers) FROM cte)