Как использовать функцию Макс с группой с помощью MYSQL

У меня есть эти 3 таблицы

кандидаты

cdid cdname

1 мусса
2 Мустафа
3 Хайтам

позиции

Posid Posname

1 поз1
2 поз2
3 поз3

Предложения о работе

зарплата
1 1 600
1 2 800
1 3 700
2 1 500
2 2 700
2 3 900
3 2 1000
3 3 500

Мне нужно сделать запрос, который получит cdname с максимальной зарплатой за каждую должность

таблица должна быть такой

cdname posname зарплата

Мусса пос1 600
haitham pos2 1000
Мустафа пос3 900

Я использую этот запрос, но он не получает правильный cdid

$sql="select joboffers.cdid,joboffers.posid,Max(joboffers.salary),candidates.cdname
FROM joboffers,candidates
Where joboffers.cdid=candidates.cdid

Group by joboffers.posid";

0

Решение

Попробуй это 🙂

SELECT sub.cdname, sub.posname, sub.salary
FROM (
SELECT * FROM joboffers jo
INNER JOIN positions ps USING (posid)
INNER JOIN candidates cd USING (cdid)
ORDER BY posid, salary DESC
) sub
GROUP BY sub.posid
0

Другие решения

Я думаю, что вам нужно сгруппировать по всем неагрегированным столбцам, например так:

SELECT j.cdid, c.cdname, j.posid, MAX(j.salary)
FROM joboffers j
JOIN candidates c ON j.cdid = c.cdid
GROUP BY j.cdid, c.cdname, j.posid
0

 SELECT c.cdname, p.posname, MAX(j.salary)
FROM joboffers j
INNER JOIN candidates c ON j.cdid = c.cdid
INNER JOIN positions p ON j.posid = p.posid
GROUP BY c.cdname, p.posname
0

enter code hereВЫБЕРИТЕ customerNumber, MAX (количество)
ОТ платежей
GROUP BY customerNumber
ЗАКАЗАТЬ ПО МАКСУ (сумма);

0
По вопросам рекламы [email protected]