我得到了一个Sum(),其中a.name = b.name,我想选择最高Sum()的名称:如何?

时间:2016-08-20 16:36:29

标签: mysql sql sum

我现在不清楚这个问题,但我有以下表格:

------------------------------
-- Recipe ----- Ingredients --
------------------------------
-- ID        -  ID          --
-- Name      -  Name        --
-- Cost      -  Cost        --
-- Calories  -  Calories    --
--           -  RecipeName  --
------------------------------

我创建了这个程序

DELIMITER !!!
CREATE PROCEDURE RecipeCost()
BEGIN
SELECT Ingredients.RecipeName,
       MAX(( SELECT SUM(Ingredients.Cost)
             FROM Ingredients
             WHERE Recipe.Name = Ingredients.RecipeName)) AS Price   
FROM Ingredients
JOIN Recette
WHERE Recette.Name= Ingredients.RecipeName;

END !!!

正确显示最高费用,但我无法显示与此费用相关的食谱名称。

你知道为什么吗?

3 个答案:

答案 0 :(得分:0)

以下每种食谱的成本如下:

select i.recipename, sum(i.cost)
from ingredients i
group by i.recipename;

获得最高成本。 。

select i.recipename, sum(i.cost) as total_cost
from ingredients i
group by i.recipename
order by total_cost desc
limit 1;

不需要加入食谱表,因为名称在成分表中。

答案 1 :(得分:0)

我不了解p{border: 1px solid #000;} footer{border: 2px solid green;} 的使用情况。 max已使子查询产生单个值。也许这就是你想要的:

sum

答案 2 :(得分:0)

您需要按RecipeName分组并使用聚合SUM来获得所需的结果。为了获得最大和最小使用不同的顺序和联盟结果.. http://www.sqlfiddle.com/#!9/f3c470/6

(select i.RecipeName, sum(i.cost) cost
from ingredients i
group by i.RecipeName
order by cost desc
limit 1)
UNION
(select i.RecipeName, sum(i.cost) cost
from ingredients i
group by i.RecipeName
order by cost 
limit 1);