当前位置: 首页 > article >正文

SQL-leetcode—1327. 列出指定时间段内所有的下单产品

1327. 列出指定时间段内所有的下单产品

表: Products

±-----------------±--------+
| Column Name | Type |
±-----------------±--------+
| product_id | int |
| product_name | varchar |
| product_category | varchar |
±-----------------±--------+
product_id 是该表主键(具有唯一值的列)。
该表包含该公司产品的数据。

表: Orders

±--------------±--------+
| Column Name | Type |
±--------------±--------+
| product_id | int |
| order_date | date |
| unit | int |
±--------------±--------+
该表可能包含重复行。
product_id 是表单 Products 的外键(reference 列)。
unit 是在日期 order_date 内下单产品的数目。

写一个解决方案,要求获取在 2020 年 2 月份下单的数量不少于 100 的产品的名字和数目。

返回结果表单的 顺序无要求 。

查询结果的格式如下。

示例 1:

输入:
Products 表:
±------------±----------------------±-----------------+
| product_id | product_name | product_category |
±------------±----------------------±-----------------+
| 1 | Leetcode Solutions | Book |
| 2 | Jewels of Stringology | Book |
| 3 | HP | Laptop |
| 4 | Lenovo | Laptop |
| 5 | Leetcode Kit | T-shirt |
±------------±----------------------±-----------------+
Orders 表:
±-------------±-------------±---------+
| product_id | order_date | unit |
±-------------±-------------±---------+
| 1 | 2020-02-05 | 60 |
| 1 | 2020-02-10 | 70 |
| 2 | 2020-01-18 | 30 |
| 2 | 2020-02-11 | 80 |
| 3 | 2020-02-17 | 2 |
| 3 | 2020-02-24 | 3 |
| 4 | 2020-03-01 | 20 |
| 4 | 2020-03-04 | 30 |
| 4 | 2020-03-04 | 60 |
| 5 | 2020-02-25 | 50 |
| 5 | 2020-02-27 | 50 |
| 5 | 2020-03-01 | 50 |
±-------------±-------------±---------+
输出:
±-------------------±--------+
| product_name | unit |
±-------------------±--------+
| Leetcode Solutions | 130 |
| Leetcode Kit | 100 |
±-------------------±--------+
解释:
2020 年 2 月份下单 product_id = 1 的产品的数目总和为 (60 + 70) = 130 。
2020 年 2 月份下单 product_id = 2 的产品的数目总和为 80 。
2020 年 2 月份下单 product_id = 3 的产品的数目总和为 (2 + 3) = 5 。
2020 年 2 月份 product_id = 4 的产品并没有下单。
2020 年 2 月份下单 product_id = 5 的产品的数目总和为 (50 + 50) = 100 。

题解

要求获取在 2020 年 2 月份下单的数量不少于 100 的产品的名字和数目。

  • 获取在 2020 年 2 月份下单的 ——where 筛选时间
  • 数量不少于 100 —— 聚合后筛选

方法一 join+group by

with tmp as (
select
    product_id
    ,sum(unit) sum_unit
from Orders where date_format(order_date,'%Y-%m') = '2020-02'
group by product_id
)
select p1.product_name,o1.sum_unit as unit
from products p1 join tmp o1 on p1.product_id=o1.product_id
where o1.sum_unit >=100

方法二 join+group by + having

with tmp as (
select
    product_id
    ,sum(unit) sum_unit
from Orders where date_format(order_date,'%Y-%m') = '2020-02'
group by product_id
having sum_unit>=100
)
select p1.product_name,o1.sum_unit as unit
from products p1 join tmp o1 on p1.product_id=o1.product_id

http://www.kler.cn/a/539660.html

相关文章:

  • 激活函数 05 ——Swish
  • UnityShader学习笔记——高级纹理
  • 【漫话机器学习系列】082.岭回归(或脊回归)中的α值(alpha in ridge regression)
  • 智能化食品安全管理:AI视频监控在大型商场的技术方案
  • 【Ubuntu】安装和使用Ollama的报错处理集合
  • webpack系统学习
  • 使用JavaScript接入星火大模型:构建智能问答系统
  • 4.2 检查k8s集群准入配置和其他准备工作
  • 使用matlab 对传递函数分析bode图和阶跃函数
  • 【实战篇】DeepSeek + ElevenLabs:让人工智能“开口说话”,打造你的专属语音助手!
  • Vue.js 如何自定义主题和样式
  • openAI官方prompt技巧(一)
  • 【Java基础-44.2】Java中的LinkedList:特征与方法详解
  • 单例模式几种实现
  • 【漫话机器学习系列】082.岭回归(或脊回归)中的α值(alpha in ridge regression)
  • Linux 安装 Ollama
  • ASP.NET Core WebSocket、SignalR
  • 从零开始掌握Python人工智能:实战案例、学习路径与职业建议
  • MOSSE目标跟踪算法详解
  • 深度学习-可调整嵌入维度、隐藏层维度和训练轮数
  • Chrome 浏览器 支持多账号登录和管理的浏览器容器解决方案
  • 二级C语言题解:迭代求根、字符串加法、字符串拆分
  • ARM Cortex-M3/M4 权威指南 笔记【一】架构
  • PHP 完整表单实例
  • 嵌入式硬件篇---OpenMV串口流和缓冲区
  • 用AI写游戏3——模拟发牌