2016-12-05 3 views
0

나는 상점에 최고 영업 사원을 찾고 직원 이름, 그가 근무하는 가게 및 판매액을 표시하기 위해 쿼리를 작성하려고합니다. 나는 현재 판매량이 가장 많은 직원만을 출력하고 싶습니다. 내 쿼리는 모든 직원을 수치로 출력합니다. 이 같은 여기SQL에서 max 함수를 사용하는 방법

Results

답변

0

당신이 가게 당 최고 판매 인원을 원한다면, 당신은 걸러 낼 필요가 있습니다. 이것은 WHERE 절에서 가장 잘 수행됩니다.

는 MySQL의에서 이러한 유형의 쿼리는 가장 쉽게 실제로 변수를 사용하여 수행 :

또한
select fs.* 
from (select fs.*, 
      (@rn := if(@s = shopname, @rn + 1, 
         if(@s := shopname, 1, 1) 
         ) 
      ) as rn 
     from (select fr.empnin, s.shopname, SUM(fr.Rentalrate) AS Sales 
      from frs_FilmRental fr join 
       frs_Shop s 
       using (??) -- add the appropriate column here 
      group by empnin 
      ) fs cross join 
      (select @rn := 0, @s := '') params 
     order by shopname, sales desc 
    ) fs 
where rn = 1; 

natural join를 사용하지 않는합니다. 그것은 참여하기 위해 사용되는 키를 숨기고 일부 예기치 않은 열이 사용되게 될 수 있기 때문에 발생하기를 기다리는 버그입니다.

0

, :

SELECT top 10 empnin, min(shopname) as Shopname, SUM(Rentalrate) AS Sales 
FROM frs_FilmRental 
NATURAL JOIN frs_Shop 
GROUP BY empnin 
order by sum(Rentalrate) desc 
0
SELECT TOP 1 empnin, shopname, SUM(Rentalrate) AS Sales 
FROM frs_FilmRental 
NATURAL JOIN frs_Shop 
GROUP BY empnin ORDER BY Sales 

는 SQL 서버

에 대해 위의 시도
SELECT empnin, shopname, SUM(Rentalrate) AS Sales 
FROM frs_FilmRental 
NATURAL JOIN frs_Shop 
GROUP BY empnin 

내가 내 쿼리를 얻을 다음과 같은 결과입니다