• LeetCode 1251. 平均售价


    题目链接:1251. 平均售价

    题目描述

    表:Prices

    Column NameType
    product_idint
    start_datedate
    end_datedate
    priceint

    (product_id,start_date,end_date) 是 prices 表的主键(具有唯一值的列的组合)。
    prices表的每一行表示的是某个产品在一段时期内的价格。 每个产品的对应时间段是不会重叠的,这也意味着同一个产品的价格时段不会出现交叉。

    表:UnitsSold

    Column NameType
    product_idint
    purchase_datedate
    unitsint

    该表可能包含重复数据。
    该表的每一行表示的是每种产品的出售日期,单位和产品 id。

    编写解决方案以查找每种产品的平均售价。average_price 应该四舍五入到小数点后两位,返回结果表无顺序要求
    结果格式如下例所示。

    输入:
    Prices table:

    product_idstart_dateend_dateprice
    12019-02-172019-02-285
    12019-03-012019-03-2220
    22019-02-012019-02-2015
    22019-02-212019-03-3130

    UnitsSold table:

    product_idpurchase_dateunits
    12019-02-25100
    12019-03-0115
    22019-02-10200
    22019-03-2230

    输出:

    product_idaverage_price
    16.96
    216.96

    解释:

    平均售价 = 产品总价 / 销售的产品数量。
    产品 1 的平均售价 = ((100 * 5)+(15 * 20) )/ 115 = 6.96
    产品 2 的平均售价 = ((200 * 15)+(30 * 30) )/ 230 = 16.96

    题目分析

    扫一眼左连接,时间范围匹配,分组求值,保留两位。OK,开始问神奇的海螺:
    在这里插入图片描述
    替换题目中的各值:

    SELECT u.product_id, units * price as totalprice, u.units
    FROM UnitsSold u
             LEFT JOIN Prices p
                       ON (u.purchase_date BETWEEN p.start_date AND p.end_date) AND u.product_id = p.product_id 
    
    • 1
    • 2
    • 3
    • 4

    效果非常好!
    在这里插入图片描述
    接下来分组、计算均价、保留两位:

    SELECT p.product_id, ROUND(sum(units * price) / sum(units), 2) as average_price
    FROM Prices p
             LEFT JOIN UnitsSold u
                       ON (u.purchase_date BETWEEN p.start_date AND p.end_date) AND u.product_id = p.product_id
    group by p.product_id
    
    • 1
    • 2
    • 3
    • 4
    • 5

    运行!
    在这里插入图片描述
    好好好,再套一个非空,下班。

    代码

    SELECT p.product_id, COALESCE(ROUND(sum(units * price) / sum(units), 2), 0) as average_price
    FROM Prices p
             LEFT JOIN UnitsSold u
                       ON (u.purchase_date BETWEEN p.start_date AND p.end_date) AND u.product_id = p.product_id
    group by p.product_id
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    好,又一段人下人代码,海螺全责🐚

  • 相关阅读:
    HarmonyOS(鸿蒙系统)物联网开发教程——环境搭建
    基于微信小程序的宠物寄养平台小程序设计与实现(源码+lw+部署文档+讲解等)
    正则验证用户名和跨域postmessage
    写个计算器
    Aigtek高精度电流源仪器设计规范
    计算机毕业设计之java+ssm基于web的医药进出口交易系统
    Nacos作为配置中心详解
    vscode无法实现函数跳转,跳转到函数定义的地方
    cubeIDE开发,基于已有的STM32CubeMX (.ioc)创建工程文件
    树的邻接表存储法
  • 原文地址:https://blog.csdn.net/weixin_44122062/article/details/133705097