SQL: получить минимальное и максимальное значение в одном столбце - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть таблица employee с именем и зарплатой.

Я хочу напечатать эти 2 столбца, содержащие только 2 записи, имя моего сотрудника с самой высокой и самой низкой зарплатой.

Это должно выглядеть примерно так:

Name      Salary  
------------------
James       800  
Samanth    3000

Следующий код НЕ тот, который я хочу, я хочу, чтобы min и max были в 2 столбцах с двумя именами, представляющими каждое значение

SELECT 
    name, MIN(salary), MAX(salary)
FROM
    employee

Ответы [ 6 ]

0 голосов
/ 20 февраля 2019

Я, наконец, понял простой код для того, что я хотел.

select emp_name, salary
from employees
where salary = (select max(salary) from employees)
union all
select emp_name, salary
from employees
where salary = (select min(salary) from employees);

Я не знал о Союзе.Спасибо всем за ваш вклад

0 голосов
/ 20 февраля 2019

вы можете попробовать это.пример вывода.

name      MAX(salary)   MIN(salary)
George    9200          9200
James     5000           100
Kanye     3200          3200
Nicole    4500          4500
Samanth   3000          2300
Umut      1500           250
Vladimir  2300           330

пример табличных значений

id  name      salary
 1  James        800
 2  Samanth     3000
 3  Umut        1500
 4  Umut         250
 5  Nicole      4500
 6  George      9200
 7  Kanye       3200
 8  Vladimir    2300
 9  Vladimir    1000
10  Vladimir     330
11  James       5000
12  James        100
13  Samanth     2300

SELECT name, MAX(salary), MIN(salary) FROM employee GROUP BY name;

0 голосов
/ 20 февраля 2019

Вы можете сделать следующее, если используете mysql

  1. Сгруппировать всех пользователей по зарплате 1-й
  2. Список пользователей с минимальной зарплатой, используя 'order by limit 1'
  3. Выполните те же действия, что и в шаге 2, для получения максимальной заработной платы
  4. UNION им

Это решит проблему, даже если у более 1 человека максимальная / минимальная зарплата

SELECT * 
FROM   ( 
                SELECT   group_concat(NAME) AS names , 
                         salary , 
                         'minimum' AS remarks 
                FROM     employee 
                GROUP BY salary 
                ORDER BY salary limit 1)tmp 
UNION ALL 
SELECT * 
FROM   ( 
                SELECT   group_concat(NAME) AS names , 
                         salary , 
                         'maximum' AS remarks 
                FROM     employee 
                GROUP BY salary 
                ORDER BY salary DESC limit 1
    )tmp1

Пример вывода

names       salary  remarks
tom,jolly   10      minimum
sally     10001   maximum
0 голосов
/ 20 февраля 2019

Лучший метод зависит от базы данных, но следующий стандарт использует SQL:

select max(case when seqnum_asc = 1 then salary end) as min_salary,
       max(case when seqnum_asc = 1 then name end) as min_salary_name,
       max(case when seqnum_desc = 1 then salary end) as max_salary,
       max(case when seqnum_desc = 1 then name end) as max_salary_name      
from (select e.*,
             row_number() over (order by salary asc) as seqnum_asc,
             row_number() over (order by salary desc) as seqnum_desc
      from employee e
     ) e;
0 голосов
/ 20 февраля 2019

Так я и использовал.Вы можете сделать это

DECLARE @minsalary varchar(60)
set @minsalary = (select top 1 concat(Name, ' ', salary) from employee where salary= (select min(salary) from employee) 
)

DECLARE @maxsalary varchar(60)
set @maxsalary = (select top 1 concat(Name, ' ', salary) from employee where salary= (select max(salary) from employee) 
)

select concat(@maxsalary, ' ', @minsalary)
0 голосов
/ 20 февраля 2019

Есть много способов сделать это.Это только один из них.Также он может дать более 2 записей, если они имеют одинаковую минимальную / максимальную зарплату

, объявляют @min int, @max int select @ min = min (Salary), @ max = max (Salary) из YourTable

ВЫБЕРИТЕ Имя, Зарплата из YourTable, где Зарплата = @ мин ИЛИ Зарплата = @ макс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...