U@007 Ответов: 8

sql-запрос для n-й самой высокой и самой низкой зарплаты с именем сотрудника


Я пытаюсь запросить зарплату с именем сотрудника, но не могу получить результатов.

мой вопрос таков

Select Min(Salary) as Highest_Salary From (Select Top 1 * From employee Order by Salary Desc) Employee


sql-запрос для n-й самой высокой и самой низкой зарплаты с именем сотрудника?

заранее спасибо.

8 Ответов

Рейтинг:
62

Yogesh Kumar Tyagi

Запрос на получение N-й самой высокой зарплаты

SELECT TOP 1 salary,Name
FROM (
SELECT DISTINCT TOP n salary,Name
FROM employee
ORDER BY salary DESC) a
ORDER BY salary


Запрос, чтобы получить N-ю самую низкую зарплату

SELECT TOP 1 salary
FROM (
SELECT DISTINCT TOP n salary
FROM employee
ORDER BY salary ASC) a
ORDER BY salary


U@007

спасибо вопрос :)

Yogesh Kumar Tyagi

Добро Пожаловать...

U@007

привет йохеш, в N-М самом высоком и самом низком вопросе зарплаты, что такое различие а .

Yogesh Kumar Tyagi

Это временно псевдонимы таблицы

U@007

Хорошо. Спасибо В.
:)
хорошего вам дня.

Yogesh Kumar Tyagi

добро пожаловать...

Hareesh Malli

Вы сделали большое, но небольшое изменение, которое вы должны сделать в "запросе, чтобы получить N-ю самую низкую зарплату", как это
"Выбрать первые 1 зарплату
ОТ (
Выбрать различные первые N зарплата
от сотрудников
Заказ по зарплате ASC) a
Приказ по убыванию зарплаты"

SumonCse05

ладно

Рейтинг:
60

Peter Leow

Допустим, вы хотите получить имя сотрудника, который зарабатывает 4-ю самую высокую зарплату:

with cte (empname, salary)
as
(
select top 4 empname, salary from table1 order by salary desc
) select empname, salary from cte where salary =
(select min(salary) from cte)

Идея состоит в том, чтобы сначала отсортировать зарплату по убыванию, затем выбрать верхние 4, а затем получить мин этих 4.
Вы должны попытаться найти ответ на вторую часть вашего вопроса. Сделайте наоборот.


U@007

благодаря м :)

SumonCse05

данные

Рейтинг:
2

SumonCse05

Пожалуйста, попробуйте это.

select name,salary from employee where salary in((select max(salary) from employee) ,
(select min(salary) from employee))


спасибо.


Рейтинг:
2

Aarti Meswania

проверить это...
вы можете исключить предложение with и заменить tbl_emp своим именем таблицы
проверьте запрос в приведенном ниже комментарии... извините, что это дает ошибку при добавлении sql-оператора в ответ, поэтому у меня есть post-запрос в комментариях

Счастливого Кодирования!
:)


Aarti Meswania

Объявить @nthLowest int = 3
Объявить @nthHighest int = 3
;С tbl_emp в качестве
(
Выберите 27000 как sal,'emp 01' как emp union ALL
Выберите 2,'emp 02' union ALL
Выберите 3,'emp 03'
)
Выберите sal, emp из
(
Выберите sal, emp ,
row_number() OVER ( order by sal,Emp) as sal_asc_order,
row_number() OVER ( order by sal DESC,Emp ) as sal_desc_order
От tbl_emp
) как темп
Где sal_asc_order = @nthLowest -- вы также можете использовать <=
--Где sal_desc_order = @nthHighest -- вы также можете использовать >=

Рейтинг:
2

Member 11886561

Для высоких энной зарплаты:-


выбрать максимум(зарплата) от emp_sal где зарплата не в(Выбрать первые(П-1)Зарплата от emp_sal заказ по зарплате по алфавиту)


SumonCse05

Хороший ответ

SumonCse05

Хорошо известное решение

SumonCse05

ладно

SumonCse05

ладно

Рейтинг:
2

Member 13922512

Есть упоминание о том, что первое самое высокое второе значение отображается в нашей таблице с помощью этого запроса mysql.

затем, Вторая-низкой вторым значением в нашей таблице с помощью этого запроса MySQL.



1) Выберите столбец empname, emp_salary от tbl_employee где emp_salary = (выбрать Макс(emp_salary) от tbl_employee где emp_salary &ЛТ; (выбрать максимум(emp_salary) от tbl_employee))

2) Выберите столбец empname, emp_salary от tbl_employee где emp_salary = (выберите мин(emp_salary) от tbl_employee где emp_salary &ГТ; (выберите мин(emp_salary) от tbl_employee))


Richard Deeming

Спрашивали, отвечали и решали ЧЕТЫРЕ ГОДА НАЗАД.

Придерживайтесь ответов на недавние вопросы.

Рейтинг:
1

Abrar Kazi

выберите зарплату из emp e, где 4=(Выберите Count(зарплата)из emp d, где e.зарплата<=d.зарплата)

Просто замените 4 на любое число, которое вы хотите получить, чтобы получить самую высокую зарплату из указанного числа.


SumonCse05

ладно

Рейтинг:
1

Member 13091969

Демо-Скрипт

IF OBJECT_ID('Tempdb..#Employee') IS NOT NULL
    DROP TABLE #Employee;
 
CREATE TABLE #Employee
(EmployeeName VARCHAR(75), Salary MONEY); 
 
INSERT INTO #Employee 
VALUES
 ('A', 10000)
,('B', 20000)
,('C', 30000)
,('D', 30000)
,('E', 20000)
,('F', 40000)
,('G', 5000); 
 
SELECT * FROM #Employee;


Поиск N-Й Самой Высокой Зарплаты
--Nth Highest Salary
DECLARE @Nth_Highest_Salary INT;
SET @Nth_Highest_Salary=3;
 
SELECT Salary AS Nth_Highest_Salary FROM
(
    SELECT DISTINCT Salary,DENSE_RANK() OVER(ORDER BY Salary DESC) AS R_NO FROM #Employee
) A
WHERE R_NO=@Nth_Highest_Salary;


Найти N-Й Минимальной Заработной Платы
--Nth Lowest Salary
DECLARE @Nth_Lowest_Salary INT;
SET @Nth_Lowest_Salary=2;
 
SELECT Salary AS Nth_Lowest_Salary FROM
(
    SELECT DISTINCT Salary,DENSE_RANK() OVER(ORDER BY Salary ASC) AS R_NO 
    FROM #Employee
) A
WHERE R_NO=@Nth_Lowest_Salary;