Фильтр для чеснока c до агрегации . В конце концов, вы хотите, чтобы рецепты содержали некоторое количество чеснока c.
Во-вторых, для этого необходимо предположить, что измерения для чеснока c все одинаковые, поэтому вы можете просто использовать amount
как мера.
Затем один из методов - использовать select top (1)
или select top (1) with ties
для получения результатов. Разница в том, что select top (1)
всегда возвращает ровно одну строку, даже если несколько рецептов имеют одинаковое максимальное количество чеснока c.
Итак:
select top (1) with ties r.RecipeTitle
from Recipes r join
Recipe_Ingredients ri
on r.RecipeID = ri.RecipeID join
Ingredients i
on ri.IngredientID = i.IngredientID
where i.IngredientName = 'garlic'
group by r.RecipeID, r.RecipeTitle
order by sum(amount) desc;
Можно измерить чеснок c в разных единицах - например, "головы" против "гвоздики", поэтому вам может потребоваться принять во внимание единицу измерения:
select top (1) with ties r.RecipeTitle
from Recipes r join
Recipe_Ingredients ri
on r.RecipeID = ri.RecipeID join
Ingredients i
on ri.IngredientID = i.IngredientID join
Measurements m
on ri.measurementAmountID = m.measurementAmountID
where i.IngredientName = 'garlic' and
i.MeasurementDescription = 'clove'
group by r.RecipeID, r.RecipeTitle
order by sum(amount) desc;