【SQL】1084. 销售分析III (多种解法;is null 和 =null 的区别图示 )

前述

知识点学习:MySQL 中 is null 和 =null 的区别

题目描述

leetcode题目: 1084. 销售分析III

在这里插入图片描述
在这里插入图片描述

写法一

思路:“所有售出日期都在这个时间内”,也就是“在这个时间内售出的商品数量等于总商品数量”

-- 解法1:ACCEPT “所有售出日期都在这个时间内”,也就是“在这个时间内售出的商品数量等于总商品数量”
select A.product_id, B.product_name
from Sales A
left join Product B
on A.product_id = B.product_id
group by A.product_id
having COUNT(sale_date between '2019-01-01' and '2019-03-31' or null) = COUNT(*);

写法二

思路:最小的日期,最大的日期,都在2019-01-01至2019-03-31之间。

-- 解法2:ACCEPT: 思路:最小的日期,最大的日期,都在2019-01-01至2019-03-31之间。
select A.product_id, B.product_name
from Sales A
left join Product B
on A.product_id = B.product_id
group by A.product_id
having min(A.sale_date) >= '2019-01-01' and max(A.sale_date) <= '2019-03-31';

写法三

参看,大佬的题解

select product_id, product_name
from product 
where product_id not in (
  select s.product_id
  from sales s
  where sale_date < '2019-01-01' or sale_date > '2019-03-31'
)
and product_id in (
  select s.product_id
  from sales s 
)

写法四

我最初的思路:如何确定某product_id是否也在除了2019年春季之外的时间也销售?

  • 我的想法:先找:不在2019年春季销售的product_id,再取反(not in)。就是仅在2019年春季销售的product_id。
  • 我的漏洞:有可能存在没卖的产品,所有要连表找到 sale_date is null 的product_id
-- ACCEPT
select product_id, product_name 
from Product 
where product_id not in (
    select distinct Product.product_id
    from Product 
    left join Sales on Product.product_id = Sales.product_id
    where sale_date is null or sale_date not between '2019-01-01' and '2019-03-31' 
);

记录自己的错误点:用法:is null (而不是 = null)(虽然不报错,但是检索不出来)。
null 在MySQL中不代表任何值,通过运算符是得不到任何结果的,因此只能用 is null(默认情况)

is null 和 =null 的区别图示

举例:

select *
from Product 
left join Sales 
on Product.product_id = Sales.product_id
where sale_date is null or sale_date not between '2019-01-01' and '2019-03-31' 
-- 错误点:is null 而不是 = null, 虽然不报错,但是检索不出来。

在这里插入图片描述
对比

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习】diffusers 学习过程记录,StableDiffusion扩散原理

教程地址&#xff1a;https://huggingface.co/docs/diffusers/quicktour 文章目录 环境扩散模型噪声残差的作用原理&#xff0c;文字编码如何给入Unetschedulerguidance_scalescheduler.init_noise_sigma训练时候的反向传播 环境 python3.10安装环境&#xff1a; pip install…

Gitee配置SSH登录

一、背景 新入手的电脑&#xff0c;需要对Gitee上存放的项目进行更改上传&#xff0c;发现上传不了需要登录&#xff0c;便采用SSH密钥进行登录&#xff0c;防止远程管理工程中的信息泄露 二、前提 电脑已下载Git Bash工具&#xff0c;在项目下点击鼠标右键&#xff0c;进入…

halconOCR文字识别

1、OCR文字识别 FontFile : Universal_0-9_NoRej dev_update_window (off) read_image (bottle, bottle2) get_image_size (bottle, Width, Height) dev_open_window (0, 0, Width, Height, black, WindowHandle) set_display_font (WindowHandle, 16, mono, true, false) dev…

适用于系统版本:CentOS 6/7/8的基线安全检测脚本

#!/bin/bash #适用于系统版本&#xff1a;CentOS 6/7/8 echo "----------------检测是否符合密码复杂度要求----------------" #把minlen&#xff08;密码最小长度&#xff09;设置为8-32位&#xff0c;把minclass&#xff08;至少包含小写字母、大写字母、数字、特殊…

JVM及垃圾回收算法

一、JVM 1、jvm的内存组成 五大内存区域&#xff0c;分1.7和1.8 1.堆内存&#xff1a;引用类型的数据&#xff0c;内部组成&#xff1a;1.新生代&#xff08;伊甸区和幸存者区&#xff09;2.老年代。该区域经常发生垃圾回收的操作 堆是JVM中最大的一块内存区域&#xff0c;用…

mac安全干净卸载Anaconda3

使用which python显示当前使用的是/Users/username/anaconda3/bin/python 现在想卸载Anaconda&#xff0c;恢复使用mac系统自带的Python 删除隐藏文件目录 rm -rf ~/.anaconda修改~/.bash_profile文件&#xff0c;将anaconda相关删除 也有可能不是~/.bash_profile而是~/.zs…

声卡喊话IP喇叭,IP网络吸顶天花喇叭

声卡喊话IP喇叭&#xff0c;IP网络吸顶天花喇叭 SV-7043VP是一款ip/sip网络吸顶喇叭&#xff0c;具有10/100M以太网接口&#xff0c;从网络接口接收网络的音频数据后播放。本网络吸顶喇叭可以与其他广播主机、服务器软件和采播主机配合使用&#xff0c;实现音频的播放&#xf…

【DL经典回顾】深度学习概述

深度学习概述 一、引言 在过去的几年里&#xff0c;深度学习已经从学术研究的领域走向了主流&#xff0c;彻底改变了我们对人工智能的认识和应用。这种强大的技术&#xff0c;以其独特的能力模仿人脑处理和分析复杂数据的方式&#xff0c;不仅在科学界引起了革命&#xff0c;…

ThingsBoard Edge 安装部署

文章目录 一、概述1.官方文档2.部署说明3.安装准备3.1. 克隆服务器3.2.安装 Docker3.3.安装 Java 113.4.安装 PostgreSQL3.5.下载安装包 二、安装部署1.创建 Edge 实例2.创建数据库3.Edge 服务安装3.1.安装服务3.2.配置 Edge3.3.运行安装脚本3.4.重新启动服务 4.访问 Edge5.故障…

基于PHP的数字化档案管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的数字化档案管理系统 一 介绍 此数字化档案管理系统基于原生PHP&#xff0c;MVC架构开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 php(mvc)mysqlbootstrapphpstudyvscode 二 功能 …

django-comment-migrate 模型注释的使用

django-comment-migrate 的使用 django-comment-migrate 是一个 Django 应用&#xff0c;用于将模型注释自动迁移到数据库表注释中。它可以帮助您保持数据库表注释与模型定义的一致性&#xff0c;并提高代码的可读性。 安装 要使用 django-comment-migrate&#xff0c;您需要…

Arcgis新建位置分配求解最佳商店位置

背景 借用Arcgis帮助文档中的说明:在本练习中,您将为连锁零售店选择可以获得最大业务量的商店位置。主要目标是要将商店定位在人口集中地区附近,因为这种区域对商店的需求量较大。设立这一目标的前提是假设人们往往更多光顾附近的商店,而对于距离较远的商店则较少光顾。您…

C++学习随笔(5)——类和对象的深窥

本章我们来学习一下更深入了解一下类和对象&#xff01; 目录 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1 运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载…

一键切割,激发无限创意:体验全新图片批量编辑器

在数字创意的时代&#xff0c;图片编辑成为了表达个性和创造力的关键。然而&#xff0c;传统的图片编辑工具常常让人望而生畏&#xff0c;复杂的操作和高门槛的技术要求使得许多人望而却步。现在&#xff0c;我们为您带来一款全新的图片批量编辑器&#xff0c;只需一键切割&…

vivo统一接入网关VUA转发性能优化实践

作者&#xff1a;vivo 互联网服务器团队 - Qiu Xiangcun 本文将探讨如何通过使用Intel QuickAssist Technology&#xff08;QAT&#xff09;来优化VUA的HTTPS转发性能。我们将介绍如何使用QAT通过硬件加速来提高HTTPS转发的性能&#xff0c;并探讨QAT在不同应用场景中的表现。最…

Abaqus三维梯度泰森多边形插件:Voronoi FGM 3D(Mesh)- AbyssFish

插件介绍 Voronoi FGM 3D (Mesh) V1.0 - AbyssFish 插件可在Abaqus软件内生成梯度分布的三维泰森多边形长方体模型。插件可用于梯度功能材料(Functionally Gradient Materials)、梯度纳米金属材料、梯度金属结构等梯度晶体模型的建立。模型基于背景网格实现&#xff0c;通过单…

分布式数据处理MapReduce简单了解

文章目录 产生背景编程模型统计词频案例 实现机制容错机制Master的容错机制Worker的容错机制 产生背景 MapReduce是一种分布式数据处理模型和编程技术&#xff0c;由Google开发&#xff0c;旨在简化大规模数据集的处理。产生MapReduce的背景&#xff1a; 数据量的急剧增长&…

RAID技术知识详解到RAID 10的linux实现过程

1.RAID技术简介 RAID&#xff08;Redundant Array of Independent Disks&#xff09;独立磁盘冗余阵列。通俗来说就是将多个硬盘通过软件或硬件结合成虚拟单台大容量的硬盘使用。 RAID技术的特点&#xff1a; 可以自动检测故障硬盘&#xff1b; 可以重建硬盘坏道的资料&…

深度学习模型部署-番外-TVM机器学习编译

什么是机器学习编译器/AI编译&#xff1f; 图片来自知乎大佬的文章 机器学习编译是指&#xff1a;将模型从训练形式转变为部署模式 训练模式&#xff1a;使用训练框架定义的模型部署模式&#xff1a;部署所需要的模式&#xff0c;包括模型每个步骤的实现代码&#xff0c;管理资…

html--宠物

文章目录 htmljscss html <!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>CodePen - Spaceworm</title><script> window.requestAnimFrame (function() {return (window.requestAnimat…