leetcode 1677 发票中的产品金额(postgresql)

需求

Product 表:

±------------±--------+
| Column Name | Type |
±------------±--------+
| product_id | int |
| name | varchar |
±------------±--------+
product_id 是这张表的主键
表中含有产品 id 、产品名称。产品名称都是小写的英文字母,产品名称都是唯一的
Invoice 表:

±------------±-----+
| Column Name | Type |
±------------±-----+
| invoice_id | int |
| product_id | int |
| rest | int |
| paid | int |
| canceled | int |
| refunded | int |
±------------±-----+
invoice_id 发票 id ,是这张表的主键
product_id 产品 id
rest 应缴款项
paid 已支付金额
canceled 已取消金额
refunded 已退款金额

要求写一个SQL查询,对于所有产品,返回每个产品的产品名称,以及全部发票累计的总应缴款项、总已支付金额、总已取消金额、总已退款金额。

查询结果按 product_name 排序

示例:

Product 表:
±-----------±------+
| product_id | name |
±-----------±------+
| 0 | ham |
| 1 | bacon |
±-----------±------+
Invoice table:
±-----------±-----------±-----±-----±---------±---------+
| invoice_id | product_id | rest | paid | canceled | refunded |
±-----------±-----------±-----±-----±---------±---------+
| 23 | 0 | 2 | 0 | 5 | 0 |
| 12 | 0 | 0 | 4 | 0 | 3 |
| 1 | 1 | 1 | 1 | 0 | 1 |
| 2 | 1 | 1 | 0 | 1 | 1 |
| 3 | 1 | 0 | 1 | 1 | 1 |
| 4 | 1 | 1 | 1 | 1 | 0 |
±-----------±-----------±-----±-----±---------±---------+
Result 表:
±------±-----±-----±---------±---------+
| name | rest | paid | canceled | refunded |
±------±-----±-----±---------±---------+
| bacon | 3 | 3 | 3 | 3 |
| ham | 2 | 4 | 5 | 3 |
±------±-----±-----±---------±---------+

  • bacon 的总应缴款项为 1 + 1 + 0 + 1 = 3
  • bacon 的总已支付金额为 1 + 0 + 1 + 1 = 3
  • bacon 的总已取消金额为 0 + 1 + 1 + 1 = 3
  • bacon 的总已退款金额为 1 + 1 + 1 + 0 = 3
  • ham 的总应缴款项为 2 + 0 = 2
  • ham 的总已支付金额为 0 + 4 = 4
  • ham 的总已取消金额为 5 + 0 = 5
  • ham 的总已退款金额为 0 + 3 = 3

输入

在这里插入图片描述

输出

select name,sum(rest) as rest,sum(paid) as paid,sum(canceled) as canceled,sum(refunded) as refunded
from invoice i
left join product p
on i.product_id=p.product_id
group by name
order by name

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值