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
检查语法
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
检查语法