2011-08-15 3 views
0

많은 MySQL 문을 하나로 최적화하려고하지만 문제가 생겼습니다.Min, Max, Group By 및 DateDiff

MySQL의 쿼리 :

SELECT companyid, COUNT(*) AS total 
    FROM timesheet 
    WHERE userId='1' 
    AND DATEDIFF(MIN(startDate), MAX(endDate)) <= 77 
GROUP BY companyid 
    HAVING total = 11 

난 할 노력하고있어 정확히 11 기록이 존재하고 첫 번째와 마지막 기록이 서로 11 주 내에 생성 된 모든 기업을 선택합니다. 내가 얻는 오류는 "그룹 기능의 잘못된 사용"입니다.

이 부분은 MIN(), MAX()DATEDIFF() 부분과 관련이 있습니다. 그러나 그 부분을 이해할 수는 없습니다.

+0

쿼리에 순환 논리가 있습니다. :) –

답변

2

집계 함수는 WHERE 절이 아닌 HAVING 절에 있어야합니다. (예 : DATEDIFF(MIN(startDate), MAX(endDate)) <= 77 조건)

HAVING은 그룹화 된 레코드에 적용되는 것으로 생각하고 그룹화되기 전에 개별 레코드에 적용하는 경우를 생각하십시오.