3050. 披萨配料成本分析 🔒
题目描述
表:Toppings
+--------------+---------+ | Column Name | Type | +--------------+---------+ | topping_name | varchar | | cost | decimal | +--------------+---------+ topping_name 是这张表的主键。 这张表的每一行包含配料名和配料的花费。
编写一个解决方案根据给定的配料表来计算 所有可能的 3
种配料 披萨组合的 总花费。总花费必须 舍入 到 2
位 整数。
注意:
- 不要 包含 重复 配料的披萨。例如,‘Pepperoni, Pepperoni, Onion Pizza’。
- 配料 必须 以 字母顺序 排序。例如,'Chicken, Onions, Sausage'。'Onion, Sausage, Chicken' 不会被通过。
返回结果表,以总花费 降序 排序,配料的组合 升序 排序。
返回格式如下所示。
示例 1:
输入: Toppings 表: +--------------+------+ | topping_name | cost | +--------------+------+ | Pepperoni | 0.50 | | Sausage | 0.70 | | Chicken | 0.55 | | Extra Cheese | 0.40 | +--------------+------+ 输出: +--------------------------------+------------+ | pizza | total_cost | +--------------------------------+------------+ | Chicken,Pepperoni,Sausage | 1.75 | | Chicken,Extra Cheese,Sausage | 1.65 | | Extra Cheese,Pepperoni,Sausage | 1.60 | | Chicken,Extra Cheese,Pepperoni | 1.45 | +--------------------------------+------------+ 解释: 这三种配料只有四种不同的组合: - Chicken, Pepperoni, Sausage:总花费是 $1.75 (Chicken $0.55,Pepperoni $0.50,Sausage $0.70)。 - Chicken, Extra Cheese, Sausage:总花费是 $1.65 (Chicken $0.55,Extra Cheese $0.40,Sausage $0.70)。 - Extra Cheese, Pepperoni, Sausage:总花费是 $1.60 (Extra Cheese $0.40,Pepperoni $0.50,Sausage $0.70)。 - Chicken, Extra Cheese, Pepperoni:总花费是 $1.45 (Chicken $0.55,Extra Cheese $0.40,Pepperoni $0.50)。 输出表根据总花费降序排序。
解法
方法一:窗口函数 + 条件连接
我们先使用窗口函数,按照 topping_name
字段对表进行排序,并为每一行添加一个 rk
字段,表示当前行的排名。
然后我们使用条件连接,连接三次表 T
,分别为 t1
, t2
, t3
。连接条件是 t1.rk < t2.rk
和 t2.rk < t3.rk
。然后我们计算三个配料的总价,按照总价降序排序,再按照配料名升序排序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|