2014-04-23 4 views
-1

내 질문은 --- 각 직원이 만든 각 판매가 총 판매 금액의 10 % 커미션을 얻게되어 매우 적은 수의 주문으로 더 많은 커미션을 얻었습니다. [Northwind 데이터베이스 참조]다음 코드가 오류를 표시하는 이유는 무엇입니까? 그리고 대체 무엇 이었습니까?

나는 'comm'열을 작성하여 수수료율을 계산합니다.

선택 주문 구별 (직원 ID) 여기서, MIN (수 (직원 ID))과 i는 SQLSERVER 쿼리를 실행할 때 최대 (COM)은

그것은

"비 부울의 표현과 같은 오류를 보여줍니다 타입은 조건이 예상되는 컨텍스트에서 '및'근처에 지정됩니다. "

+1

당신이 달성하려고하는거야? – Szymon

+1

이 쿼리를 작성하여 무엇을 얻으려고합니까? 스키마를 제공 할 수 있습니까? –

+0

이 질문은 여러 가지 방법으로 해석 될 수 있습니다. 쿼리를 통해 최대 커미션 총액을 가진 모든 직원을 먼저 찾은 다음 주문 수가 가장 적은 직원을 선택해야합니까? 또는 우선 최소 주문 수를 가진 모든 직원을 확보 한 다음 총 수수료가 가장 많은 직원을 선택해야합니까? 어느 쪽이든 여전히 일치하는 직원이 두 명 또는 직원 인 경우 모두 반환해야합니까 아니면 둘 중 하나만 반환해야합니까? –

답변

0

쿼리에 몇 가지 문제가 있습니다. 간단히 말해서 max() 함수를 다른 표현식과 비교하지 않고 남겨 둘 수는 없습니다. 또한 집계 함수를 where 절 안에 지정할 수 없습니다. 그 목적을 위해 (select max() ....) 하위 쿼리로 묶어야합니다. 그러나 당신은 조회 테이블에 걸쳐 합계() 및 최대()를 확인해야 목적을 위해, 당신은 아래 가진 그들을 지정해야합니다

SELECT EmployeeID 
FROM orders 
GROUP BY EmployeeID 
HAVING SUM(debet)= 
    (SELECT MAX (sum(com)) from orders GROUP BY EmployeeID) 
AND COUNT(ledger_id)= 
    (SELECT MIN(COUNT(EmployeeID)) FROM orders GROUP BY EmployeeID)