Тук е отлична статия в официалната документация на MySQL:
Цитат:
Редовете, съдържащи груповия максимум на определена колона
Задача:За всеки артикул намерете търговеца или дилъри с най-скъпата цена.
Този проблем може да бъде решен с подзаявка като тази:
SELECT article, dealer, price
FROM shop s1
WHERE price=(SELECT MAX(s2.price)
FROM shop s2
WHERE s1.article = s2.article);
Предходният пример използва корелирана подзаявка, която може да бъде неефективна (вижте раздел 13.2.10.7, „Корелирани подзаявки“). Други възможности за решаване на проблема са използването на некорелирана подзаявка в клаузата FROM или LEFT JOIN.
Некорелирана подзаявка:
SELECT s1.article, dealer, s1.price
FROM shop s1
JOIN (
SELECT article, MAX(price) AS price
FROM shop
GROUP BY article) AS s2
ON s1.article = s2.article AND s1.price = s2.price;
ЛЯВО ПРИСЪЕДИНЯВАНЕ:
SELECT s1.article, s1.dealer, s1.price
FROM shop s1
LEFT JOIN shop s2 ON s1.article = s2.article AND s1.price < s2.price
WHERE s2.article IS NULL;
LEFT JOIN работи въз основа на това, че когато s1.price е на максималната си стойност, няма s2.price с по-голяма стойност и стойностите на s2 редове ще бъдат NULL.