2013-04-18 4 views
0

У меня есть структуру таблицы, какПолучение максимального значения из группы

Emp_id Emp_name Emp_sal Depat 
1  AB   10000 A 
2  CB   12000 A 
3  DA   7000 B 
4  SB   2000 B 
5  WE   6000 A 
6  CF   10000 B 
7  AK   8000 C 
8  LM   6000 C 

Мне нужен результат, максимально emp_sal для каждой Départ группы по уйдите Как

Emp_name Emp_sal Depart 
CB   12000 A 
CF   10000 B 
AK   8000  C

Я написал запрос as:

SELECT DISTINCT (emp_sal) , depart from emp 
group by depart 
having emp_sal = (select max(emp_sal) from emp group by depart ) 

Но это не помогло. Я попробовал несколько других запросов, но не получил желаемого результата.

ответ

2

Чтобы ответить на вопрос, как указано:

select max(emp_sal), depart 
from emp 
group by depart 

Однако, я подозреваю, что вы хотите всю строки с максимальной зарплатой для каждого отдела:

select emp_name, emp_sal, depart 
from (select * from emp order by emp_sal desc) x 
group by depart 

Примечания: это MySQL единственное решение (с ударной группой), но вопрос помечен mysql, и это работает :)

0

Максимальная зарплата по отделам:

SELECT Depart, MAX(Emp_Sal) 
    FROM emp 
    GROUP BY Depart 

Список сотрудников, которые имеют максимальную зарплату в своем отделе:

0

запросов, если Emp_sal является уникальным для группы:

SQLFIDDLEExample

SELECT 
t1.Emp_name, 
t1.emp_sal, 
t1.Depat 
FROM emp t1 
WHERE t1.emp_sal = (SELECT max(t2.emp_sal) 
        FROM emp t2 
        WHERE t2.Depat = t1.Depat) 

Если нет уникальная для каждой группы:

SELECT 
t1.Emp_name, 
t1.emp_sal, 
t1.Depat 
FROM emp t1 
WHERE t1.Emp_id = (SELECT t2.Emp_id 
        FROM emp t2 
        WHERE t2.Depat = t1.Depat 
        ORDER BY t2.Emp_sal DESC 
        LIMIT 1) 

Результат:

| EMP_NAME | EMP_SAL | DEPAT | 
------------------------------ 
|  CB | 12000 |  A | 
|  CF | 10000 |  B | 
|  AK | 8000 |  C | 
Смежные вопросы