【SQL】指定时间段的下单产品

目录

语法

需求

示例

分析

代码


语法

SUM(column_name)

SUM 是一个聚合函数(Aggregate Function),用于计算数字列中值的总和。当你需要对表中的某一列数值进行求和时,SUM 函数就显得非常有用。它通常与 GROUP BY 语句一起使用,以计算每个分组中数值的总和,但也可以单独使用来计算整个列的总和。

  • SUM 函数只能用于数字列。
  • 如果 SUM 函数作用于空值(NULL),则这些空值将被忽略,不会计入总和。
  • 聚合函数(如 SUM)经常与 GROUP BY 语句一起使用,但也可以在没有 GROUP BY 的情况下单独使用,此时它们会计算整个结果集的总和。
  • 某些数据库系统(如 MySQL)允许你在没有 FROM 子句的情况下使用 SUM(例如,SELECT SUM(0);),但这通常不是常见的用法。

SELECT column1, column2, ...  
FROM table_name  
WHERE condition;

WHERE 子句用于指定过滤条件,以限制从数据库表中检索的数据。当你执行一个查询时,WHERE 子句允许你筛选出满足特定条件的记录。如果记录满足 WHERE 子句中的条件,则这些记录会被包含在查询结果中;如果不满足条件,则这些记录会被排除在外

  • WHERE 子句是在数据被检索之后但在结果被返回之前应用的。这意味着它不会减少数据库需要处理的数据量,但会限制最终返回给客户端的数据量。
  • 在使用 WHERE 子句时,确保条件正确无误,以避免返回错误的数据或意外的空结果集。
  • 对于大型数据库,合理的 WHERE 子句条件可以显著提高查询性能,因为它允许数据库系统更有效地定位和检索数据。
  • 在某些情况下,WHERE 子句可以与 GROUP BYHAVING 等子句结合使用,以实现更复杂的查询和数据聚合。然而,WHERE 子句在数据分组之前过滤记录,而 HAVING 子句在数据分组之后过滤分组。

SELECT column1, aggregate_function(column2)  
FROM table_name  
WHERE condition1  
GROUP BY column1  
HAVING condition2;

HAVING子句主要用于在聚合查询(如使用COUNT()SUM()AVG()等聚合函数的查询)中,根据聚合结果对分组后的数据进行筛选。注意,其与WHERE子句不同,WHERE子句在数据分组之前对原始数据进行过滤,而HAVING子句则在数据分组并计算聚合值之后对分组结果进行过滤。

  • 必须与GROUP BY子句一起使用:在没有GROUP BY子句的情况下,不能使用HAVING子句。
  • 只能引用聚合函数或GROUP BY子句中指定的列:HAVING子句中的条件不能直接引用表中的其他列,除非这些列也包含在GROUP BY子句中。
  • 可以包含多个条件:HAVING子句中的条件可以使用ANDORNOT等逻辑运算符进行组合。
  • 性能考虑:为了提高查询性能,尽量在WHERE子句中使用过滤条件,以减少分组操作的数据量。

需求

表: 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 的产品的名字和数目。

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

查询结果的格式如下。

示例

输入:
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 。

分析

写一个解决方案,用于获取产品名和数目

select语句用于选择需要返回的列,其中 product_name 表示产品名称,sum(unit) unit 表示产品销售数量的汇总结果并使用别名 unit 进行标识。from子句用于指定查询所需的数据表,Products 和 Orders 分别表示产品信息表和订单信息表。join关键字表示关联两个数据表,使用 using(product_id) 指定关联条件为两表中的 product_id 字段相等。

因为最终需要产品名称,而Orders表近含产品id,交叉连接可以获取对应id的产品名称,连接条件可以使用P.product_id on O.product_id 或using(product_id)

在 2020 年 2 月份下单的产品

首先是对时间的筛选,考虑where子句

where 子句用于对查询的数据进行筛选,使用 order_date >= '2020-02-01' and order_date < '2020-03-01' 条件来确定订单发生时间在 2020 年 2 月份。where order_date >= '2020-02-01' and order_date < '2020-03-01'

对于类似完整年-月,也可以使用like实现where order_date like '2020-02%'

数量不少于 100 的产品

需要对产品数量进行计数,观察实际案例,同一产品存在多次下单记录,所以首先要对数据按照产品id或产品名称进行分组,group by 子句用于对数据进行分组,按照 product_name 来分组。group by product_id。

随后使用having子句限制条件为不少于100的产品,注意having子句用于对分组后的数据进行过滤,需要在group by 之后,只有当 unit 汇总结果大于等于 100 时,当前分组的数据才被保留。having unit >= 100

代码

select product_name,sum(unit) as unit
from Products join Orders using (product_id)
where order_date >= '2020-02-01' and order_date < '2020-03-01'
-- where order_date like '2020-02%'
group by product_id
having unit >= 100

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1547373.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

运算符两边的数据类型

6-3 类型转换 1.非赋值运算的类型转换 &#xff08;1&#xff09;水平方向的转换&#xff1a;所有的char型和short型自动地转换成int 型&#xff0c;所有的unsigned short 型自动地转换成unsigned型&#xff0c;所有的long型自动地转换成unsigned long 型&#xff0c;所有的f…

exBase

1.准备工作 1.端口配置 下列为默认端口号&#xff0c;若部分端口号已被占用&#xff0c;用户可以根据实际情况进行修改。 端口号 说明 31030 exBase默认端口 31003 配置库默认端口 2181 zookeeper默认端口 9092 kafka默认端口 8091 metaNode的RPC端口 8092 node…

毕业论文写作全攻略,让你轻松过关!

姐妹们&#xff0c;毕业论文是大学旅程的最后一站&#xff0c;也是展示我们学术成果的重要时刻。但是&#xff0c;毕业论文该怎么写呢&#xff1f;别担心&#xff0c;我来告诉你&#xff01;&#x1f4da; writehelp智能写作辅导&#xff1a;http://www.writehelp.vip/?sid17…

线性基学习DAY2

今天是第二题学习线性基&#xff0c;让我对线性基的认识更多了&#xff0c;线性基其实就是去处理整个区间异或最值问题的 我们来看一下昨天的一道题 P4570 [BJWC2011] 元素 昨天其实这题我尝试了两次&#xff0c;一种是普通消元去求解&#xff0c;另一种是高斯消元去求解&…

异地如何进行跨地区协作传输文件?

跨区域协作现在是很多企业的常态了&#xff0c;无论是跨国公司还是国内多地区运营的企业&#xff0c;高效、可靠的文件传输协作都是业务顺利进行的关键。然而&#xff0c;异地传输文件常常面临诸多挑战&#xff0c;如何选择合适的工具和服务成为企业必须考虑的问题。 异地传输文…

【ADC】ΔΣ ADC 中数字滤波器的延迟以及 SAR ADC 与 ΔΣ ADC 的差异对比总结

本文学习于TI 高精度实验室课程&#xff0c;深入探讨 delta-sigma 转换器中使用的数字滤波器。具体来说&#xff0c;本文将重点介绍数字滤波器如何引入延迟&#xff0c;因为这是 SAR 和 delta-sigma ADC 之间的显著差异。 文章目录 一、低延迟数字滤波器二、高延迟数字滤波器三…

妙手上线TikTok Shop组包预报功能,助力全球跨境店卖家大促快速发货!

众所周知&#xff0c;每年的Q4可以说是所有东南亚跨境卖家的旺季&#xff0c;10月起&#xff0c;各种促销活动如10.10品牌大促和双十一大促等接踵而至&#xff0c;为卖家们带来了新的增长机遇。 特别是TikTok Shop这个新兴平台&#xff0c;更是充满无限潜力&#xff0c;根据数…

AIGAME的核心技术竞争力与未来生态规划

AIGAME凭借其领先的区块链和人工智能技术&#xff0c;打造了全球首个融合链游、DeFi和加密聊天的Web3娱乐平台。平台的核心技术创新和多元化生态规划&#xff0c;将推动全球虚拟资产管理和娱乐行业的变革。 AIGAME的核心技术竞争力源于其对区块链和人工智能&#xff08;AI&…

基于nodejs+vue的农产品销售管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

队列的基本概念以及模拟使用

1.队列的概念&#xff1a; 只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的线性表&#xff0c;队列具有先进先出FIFO 入队列 :进行插入操作的一端称为队尾. 出队列:进行删除操作的一端称为队头。 图例如下&#xff1a; 2.Queue是一个接口&…

探索SQlmap:AI驱动的SQL注入神器

文章目录 探索SQLmap&#xff1a;AI驱动的SQL注入神器1. 背景介绍2. 什么是sqlmap&#xff1f;3. 如何安装sqlmap&#xff1f;4. 简单函数使用方法4.1 检测SQL注入4.2 获取数据库列表4.3 读取数据库中的表4.4 转储表中的数据4.5 获取当前用户信息 5. 场景应用5.1 网站后台数据泄…

C++_24_适配器

A 函数对象 概念&#xff1a; ​ 重载函数调用运算符的类实例化的对象&#xff0c;就叫函数对象.又名仿函数,函数对象和&#xff08;)触发重载函数调用运算符的执行。 作用&#xff1a; ​ 为算法提供策略 示例&#xff1a; #include <iostream> using namespace s…

刷题学习日记 (1) - SWPUCTF

写这篇文章主要是想看看自己一个下午能干啥&#xff0c;不想老是浪费时间了&#xff0c;所以刷多少题我就会写多少题解&#xff0c;使用nss随机刷题&#xff0c;但是今天下午不知道为啥一刷都是SWPUCTF的。 [SWPUCTF 2021 新生赛]gift_F12 控制台ctrlf搜索flag即可&#xff0…

【入门01】arcgis api 4.x 创建地图、添加图层、添加指北针、比例尺、图例、卷帘、图层控制、家控件(附完整源码)

1.效果 2.代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title></title><link rel"s…

物联网行业中通信断线重连现象介绍以及如何实现

01 概述 断线重连是指在计算机网络中&#xff0c;当网络连接遇到异常中断或者断开时&#xff0c;系统会自动尝试重新建立连接&#xff0c;以保证网络通信的连续性和稳定性。这是一种常见的网络通信技术&#xff0c;广泛应用于各种计算机网络场景&#xff0c;包括互联网、局域…

MSVCR100.dll丢失怎么办,教你6种解决MSVCR100.dll丢失的方法

在计算机的日常使用中&#xff0c;我们可能会遇到各种各样的问题&#xff0c;其中之一就是MSVCR100.dll文件丢失。这个文件是Microsoft Visual C 2010的一个组件&#xff0c;如果丢失&#xff0c;可能会导致某些程序无法正常运行。那么&#xff0c;如何解决这个问题呢&#xff…

MySQL Unittest实践(下 Gmock篇)

一、简介 使用Gtest基本上能够满足绝大多数的测试场景&#xff0c;但是对于一些涉及多个模块交互、文件系统、网络通信等复杂的场景&#xff0c;很难仿真一个真实的环境进行单元测试。这时就需要引入模拟对象Mock Objects来模拟程序的一部分来构造测试场景。 Google C Mockin…

【大数据】数据中台怎么样助力企业创新和客户实践

在当今数字化时代&#xff0c;数据成为了企业竞争的关键因素。企业拥有大量的数据&#xff0c;但如何高效地利用这些数据&#xff0c;实现创新和提升客户体验&#xff0c;成为了一项重要的挑战。数据中台作为一种重要的数据管理和分析工具&#xff0c;发挥着关键的作用。本文将…

Select插件的用法

文章目录 1.知识回顾2.使用方法2.1 builder属性2.2 selector属性2.3 shouldRebuild属性2.4 child属性3 示例代码我们在上一章回中介绍了组件之间共享数据相关的内容,本章回中将继续介绍该内容.闲话休提,让我们一起Talk Flutter吧。 1.知识回顾 我们在前面章回中介绍了全局共…

今年1-8月,Temu的客户量下降了25%,Shein和TikTok Shop不降反增

根据Earnest信用卡数据&#xff0c;2024年1月至8月&#xff0c;在Temu平台上交易的购物者减少了约25%&#xff0c;表明该平台的增长放缓。 自上线两年以来&#xff0c;Temu通过打折和广告策略&#xff0c;尤其是在超级碗期间投放大量广告&#xff0c;迅速扩展并广泛影响了爱好…