Список только вывод 5 строк - PullRequest
0 голосов
/ 26 декабря 2018

Короче говоря, я закончил на 75% историю, где я хочу перечислить комиссионные с бизнеса, и последний шаг - показать только 5 из приведенных строк.

Предложение LIMIT, похоже, не работает с одной стороны. XD

   -- Top 5 Sales Commissions of 2018 in the Car Business - Employee of the year award 
   SELECT Emp_IDs, Emp_Name, Sale_Num, Sale_Date, Commission 
   FROM  Sales, Employee_Details, Sales_Comm
   WHERE Sales_Comm.EMP_id = Employee_Details.Emp_ID
   AND Sales_Comm.Sale_Num = Sales.Sale_No
   ORDER BY Commission DESC;

Я хотел бы выбрать в таблице комиссий по продажам порядок комиссионных от высокой к низкой, а затем выбрать 5 строк из всех результатов,

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Один из вариантов - использовать ROW_NUMBER:

SELECT Emp_IDs, Emp_Name, Sale_Num, Sale_Date, Commission
FROM
(
    SELECT Emp_IDs, Emp_Name, Sale_Num, Sale_Date, Commission,
        ROW_NUMBER() OVER (ORDER BY Commission DESC) rn
    FROM Employee_Details ed
    INNER JOIN Sales_Comm sc
        ON ed.Emp_ID = sc.Sale_Num
    INNER JOIN Sales s
        ON sc.Sale_Num = s.Sale_No
)
WHERE rn <= 5;

Обратите внимание, что я обновил ваш запрос, чтобы использовать современный явный синтаксис объединения, который в настоящее время является предпочтительным способом написания SQL.

Хотя FETCH FIRST может работать быстрее, чем указано выше, при условии, что ваша версия Oracle поддерживает его, приведенный выше код имеет одно возможное преимущество.Если вы когда-либо решили реорганизовать запрос и использовать другую метрику, вам понадобится лишь очень небольшое изменение.Например, если вы хотите сохранить 5 лучших рейтинговых комиссий, вам нужно будет поменять ROW_NUMBER на RANK (или, может быть, DENSE_RANK).

0 голосов
/ 26 декабря 2018

В Oracle нет условия LIMIT.Если вы используете 12C или новее, вы можете использовать предложение FETCH, чтобы ограничить количество результатов.Смотрите последнюю строку измененного запроса.Это идиотский и многословный, но это Оракул.

-- Top 5 Sales Commissions of 2018 in the Car Business - Employee of the year award 
SELECT Emp_IDs, Emp_Name, Sale_Num, Sale_Date, Commission 
FROM  Sales, Employee_Details, Sales_Comm
WHERE Sales_Comm.EMP_id = Employee_Details.Emp_ID
AND Sales_Comm.Sale_Num = Sales.Sale_No
ORDER BY Commission DESC
FETCH FIRST 5 ROWS ONLY; --this statement here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...