• 1677. 发票中的产品金额


    SQL架构

    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
    1. with t as (select
    2. product_id,sum(rest) rest,sum(paid) paid,sum(canceled) canceled,sum(refunded) refunded
    3. from
    4. Invoice
    5. group by product_id)
    6. select
    7. p.name,ifnull(t.rest,0) rest,ifnull(t.paid,0) paid,ifnull(t.canceled,0) canceled,ifnull(t.refunded,0) refunded
    8. from
    9. t right join Product p
    10. using(product_id)
    11. order by name

  • 相关阅读:
    echarts实现柱图的下钻功能
    基于Python的车牌识别系统实现
    misc学习(3)
    Win11不能拖拽图片到任务栏软件上快速打开怎么办
    高校校园网规划与设计
    Flask 学习-35.restful-full 自定义错误内容 error_msg 使用
    用友GRP-U8 SQL注入漏洞复现
    LeetCode 310 最小高度树
    uniapp管理后台编写,基于uniadmin和vue3实现uniapp小程序的管理后台
    K8S发布应用步骤详解
  • 原文地址:https://blog.csdn.net/m0_69157845/article/details/125565776