sql 汇总

sql sum round up

Sql新手,遇到一个问题

我有一个配方成分 table,基本上我想做的是找到一个配方的价格四舍五入到全部成分。

所以我写了这个sql。

select recipe_id_label, recipe_name, variation_name, portion_size, menu_id, variation_name,
sum (recipe_order_ingredient_quantity * ingredient_expected_cost)
from mb.weekly_menus_recipes_ingredients
where recipe_id_label = '30943'
and portion_size = '2'
group by recipe_id_label, recipe_name, variation_name, portion_size, menu_id, variation_name

这是有趣的部分。

sum (recipe_order_ingredient_quantity * ingredient_expected_cost)

这sql得到正确答案,只要没有一半的成分。例如,如果你有 0,25 包胡萝卜,它不会四舍五入到 1 包。

然后我尝试了这个。

sum (ingredient_planned_cost* ceiling (recipe_order_ingredient_quantity))

这也没有用。如果有两行有半个胡萝卜,sql 会将这些行中的每一行加起来为 1 个胡萝卜,因此它将计算两个完整的胡萝卜,而不是两半 (1)。

所以基本上我希望我的代码能够理解 half + half 是一个整体,并且理解你需要一个整体,即使你只使用四分之一。

是你想要的吗

select recipe_id_label, recipe_name, portion_size, menu_id, variation_name, 
  sum(ingcost)
from (
    select recipe_id_label, recipe_name, portion_size, menu_id, 
        variation_name, 
        ceiling(sum(recipe_order_ingredient_quantity)) * ingredient_expected_cost ingcost
    from mb.weekly_menus_recipes_ingredients
    where recipe_id_label = 30943 and portion_size = 2
    group by recipe_id_label, recipe_name, portion_size, menu_id, variation_name, 
       ingridient_id, ingredient_expected_cost
) t
group by recipe_id_label, recipe_name,  portion_size, menu_id, variation_name

编辑 使用 MySql

检查语法