2016-12-05 8 views
0

Я пытаюсь написать запрос, чтобы найти топ-продавца в магазине и попытаться отобразить имя сотрудника, магазин, где он работает, и стоимость продаж. Я только хочу, чтобы выпуск сотрудника с наибольшим количеством продаж на данный момент, мой запрос выводит всех сотрудников с их цифрами.Как использовать функцию max в SQL

SELECT empnin, shopname, SUM(Rentalrate) AS Sales 
FROM frs_FilmRental 
NATURAL JOIN frs_Shop 
GROUP BY empnin 

Это следующие результаты, которые я получаю с моим запросом:

Results

ответ

0

I f вы хотите, чтобы топ-продавец в магазине, тогда вам нужно отфильтровать. Это лучше всего сделать в предложении 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 

Try выше для SQL сервера