PostgreSql поддерживает оконные функции , поэтому простой способ заключается в следующем:
SELECT Pizza,
Ingredient,
MAX(Amount) OVER(PARTITION BY Ingredient) As MaxAmount
FROM Recipe
Повторное чтение вопроса после комментария Дэмиена, я думаю, что то, что вы спрашиваете, не получит васрезультаты, которые вы хотите.
В начале вопроса вы написали:
Моя цель обучения: - найти, как найти ингредиент и увидетькакой рецепт использует любой данный ингредиент наиболее.посмотрите, какой рецепт использует тот или иной ингредиент.
Позже вы написали:
Я хочу, чтобы имя было добавлено к результирующему набору (a)
Эти утверждения противоречат.
Чтобы узнать, какая пицца использует больше всего определенного ингредиента, как вы указали в своем первом утверждении, используйте (б) запрос из вашего вопроса.Вы можете упорядочить результаты по ингредиентам, следуя столбцу MAX(AMOUNT)
в порядке убывания - это позволит вам легко увидеть, какая пицца использует большинство ингредиентов.
SELECT Name, Ingredient, MAX(Amount) AS MaxAmount
FROM Recipe
GROUP BY Ingredient,Name
ORDER BY Ingredient, MaxAmount DESC;
Запрос вМой ответ, однако, даст вам то, что вы просите во втором утверждении - получить максимальное значение для каждого ингредиента, сгруппированное только по ингредиентам, но добавив название пиццы в набор результатов.(Другими словами - добавьте название пиццы к результирующему набору (a) )