Как найти тройку самых высоких зарплат в таблице emp в оракуле?
emp
Вы можете попробовать.
SELECT * FROM ( SELECT EMPLOYEE, LAST_NAME, SALARY, RANK() OVER (ORDER BY SALARY DESC) EMPRANK FROM emp ) WHERE emprank <= 3;
Это даст правильный результат, даже если есть два сотрудника с одинаковой максимальной зарплатой
SELECT *FROM ( SELECT *FROM emp ORDER BY Salary desc ) WHERE rownum <= 3 ORDER BY Salary ;
SELECT a.ename, b.sal FROM emp a, emp b WHERE a.empno = b.empno AND 3 > (SELECT count(*) FROM emp b WHERE a.sal = b.sal);
Без использования TOP, ROWID, ранга и т. Д. Работает также с самым старым sql
Что-то вроде следующего должно сделать это.
SELECT Name, Salary FROM ( SELECT Name, Salary FROM emp ORDER BY Salary desc ) WHERE rownum <= 3 ORDER BY Salary ;
выберите top (3) min (имя), TotalSalary, ROW_NUMBER () OVER (заказ по TotalSalary desc) AS RowNumber ОТ группы tbl_EmployeeProfile по TotalSalary
решение для поиска 5 лучших зарплат на сервере sq l
выберите верхнее (1) имя, зарплата из зарплаты, где зарплата в (выберите отличную верхнюю (3) зарплату из порядка зарплаты по дисконту зарплаты)
SELECT * FROM Employees WHERE rownum <= 3 ORDER BY Salary ;
SELECT DISTINCT(salary) FROM emp order by salary asc limit 0 ,3
Выше запроса дает три самые высокие зарплаты с DISTINCT .
SELECT * FROM ( SELECT ename, sal, DENSE_RANK() OVER (ORDER BY SAL DESC) EMPRANK FROM emp ) emp1 WHERE emprank <=5