这个sql有点东西,记录一下

我有一个需求:在订单表里面查询指定时间的订单数据,如果要是没有订单的话,需要展示当天日期和数据,数据为0

先看一下效果:

话不多说,直接上SQL

SELECTdate_range.date AS 日期,COUNT( oco.id ) AS 总订单,COUNT( oco.pay_price ) AS 成功订单,IFNULL( sum( oco.pay_price ), 0 ) AS 客户付款金额 
FROM(
SELECTDATE( '2023-11-01' ) + INTERVAL t0.num DAY AS date 
FROM(
SELECT( a.num + b.num + c.num + d.num + e.num ) num 
FROM(
SELECT0 num UNION ALL
SELECT1 num UNION ALL
SELECT2 num UNION ALL
SELECT3 num UNION ALL
SELECT4 num UNION ALL
SELECT5 num UNION ALL
SELECT6 num UNION ALL
SELECT7 num UNION ALL
SELECT8 num UNION ALL
SELECT9 num ) a,(
SELECT0 num UNION ALL
SELECT10 num UNION ALL
SELECT20 num UNION ALL
SELECT30 num UNION ALL
SELECT40 num UNION ALL
SELECT50 num UNION ALL
SELECT60 num UNION ALL
SELECT70 num UNION ALL
SELECT80 num UNION ALL
SELECT90 num ) b,(
SELECT0 num UNION ALL
SELECT100 num UNION ALL
SELECT200 num UNION ALL
SELECT300 num UNION ALL
SELECT400 num UNION ALL
SELECT500 num UNION ALL
SELECT600 num UNION ALL
SELECT700 num UNION ALL
SELECT800 num UNION ALL
SELECT900 num ) c,(
SELECT0 num UNION ALL
SELECT1000 num UNION ALL
SELECT2000 num UNION ALL
SELECT3000 num UNION ALL
SELECT4000 num UNION ALL
SELECT5000 num UNION ALL
SELECT6000 num UNION ALL
SELECT7000 num UNION ALL
SELECT8000 num UNION ALL
SELECT9000 num ) d,(
SELECT0 num UNION ALL
SELECT10000 num UNION ALL
SELECT20000 num UNION ALL
SELECT30000 num UNION ALL
SELECT40000 num UNION ALL
SELECT50000 num UNION ALL
SELECT60000 num UNION ALL
SELECT70000 num UNION ALL
SELECT80000 num UNION ALL
SELECT90000 num ) e ) t0 
WHEREDATE( '2023-11-01' ) + INTERVAL t0.num DAY <= '2023-11-31' ) date_rangeLEFT JOIN user_order oco ON date_range.date = DATE( oco.create_time ) AND oco.company_id = 15 
GROUP BYdate_range.date 
ORDER BYdate_range.date ASC;

讲解一下难点:

这条SQL语句的难点主要在于日期范围的生成和连接查询。首先,它使用了一个复杂的子查询来生成从指定日期开始的一个日期范围,这里使用了多个联结查询来生成连续的数字序列,然后通过日期相加得到连续的日期序列。这种技巧对于初学者来说可能比较难的

其次,它采用了左连接(LEFT JOIN)来连接日期范围表和订单表,并进行统计。左连接会返回左表中所有的行,即使右表中没有匹配的行。对于初学者来说,理解连接查询的逻辑和结果可能需要一些时间

最后,它使用了聚合函数COUNT和SUM来对订单数据进行统计,以及使用了IFNULL函数来处理空值。这些函数的使用对于初学者来说可能需要一些熟练度

因此,这条SQL语句的难点在于对日期范围的生成、连接查询和聚合函数的理解和熟练运用

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hdoop学习笔记(HDP)-Part.14 安装YARN+MR

十四、安装YARNMR 1.MR中间结果存储权限 使用Yarn提交MapReduce任务的时候&#xff0c;中间结果会保存在HDFS&#xff0c;/user/username/&#xff0c;如果/user目录下用户目录下不存在&#xff0c;则被创建&#xff0c;当MR执行结束之后&#xff0c;中间结果会被删除&#x…

【多线程】-- 08 线程状态观测、线程优先级、守护线程

多线程 5 线程状态 5.5 线程状态观测 Thread.State线程可以处于以下状态之一&#xff1a; NEW&#xff1a;尚未启动的线程处于此状态RUNNABLE&#xff1a;在Java虚拟机中执行的线程处于此状态BLOCKED&#xff1a;被阻塞等待监视器锁定的线程处于此状态WAITING&#xff1a;正…

英语助教求职简历模板(通用10篇)

以下10篇简历内容以英语助教招聘需求为背景制作&#xff0c;大家可以借鉴参考&#xff0c;希望能帮助大家在众多候选人中脱颖而出。 英语助教求职简历下载&#xff08;可在线制作)&#xff1a;百度幻主简历 英语助教简历1&#xff1a; 求职意向 求职类型&#xff1a;全职 …

Jmeter分布式压测

一、jmeter为什么要做分布式压测 jmeter本身的局限性 一台压力机的 Jmeter 支持的线程数受限于 Jmeter 其本身的机制和硬件配置&#xff08;内存、CPU等&#xff09;是有限的由于 Jmeter 是 Java 应用&#xff0c;对 CPU 和内存的消耗较大&#xff0c;在需要模拟大量并发用户…

GPT市场将取代插件商店 openAI已经关闭plugins申请,全部集成到GPTs(Actions)来连接现实世界,可以与物理世界互动了。

Actions使用了plugins的许多核心思想&#xff0c;也增加了新的特性。 ChatGPT的"Actions"与"Plugins"是OpenAI在GPT模型中引入的两种不同的功能扩展机制。这两种机制的目的是增强模型的功能&#xff0c;使其能够处理更多样化的任务和请求。下面是对两者的比…

熬夜会秃头——Beta冲刺总结随笔

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标总结Beta冲刺团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 目录 一、Beta冲刺开始前设立的任务完成…

VMware虚拟机搭建+云平台购买搭建(阿里云+UCloud)【设置主机名以及主机名映射、配置免密登录、配置JDK】

本地虚拟机的搭建 一、准备网段 在VMware的虚拟网络编辑器中将VMnet8虚拟网卡的 网段设置为&#xff1a;192.168.88.0网关设置为&#xff1a;192.168.88.2 二、下载CentOS操作系统文件&#xff0c;并安装 三、克隆多台虚拟机 依照同样的方法&#xff0c;克隆出node2…

设计模式精讲:掌握工厂方法与抽象工厂的精髓

设计模式精讲&#xff1a;掌握工厂方法与抽象工厂的精髓 一、引言&#xff1a;如何学习设计模式&#xff1f;二、工厂方法&#xff08;也叫工厂模式&#xff09;2.1、代码结构2.2、符合的设计原则2.3、小结 三、抽象工厂3.1、代码结构3.2、符合的设计原则3.3、小结 总结 一、引…

rust持续学习 COW

COW我第一次看见还以为是奶牛 很奇怪是个啥 后来了解到是clone on write 缩写的&#xff0c;大乌龙啊 这个有两种enum,一种是borrow&#xff0c;一种是own rust中&#xff0c;数据读写经常涉及到所有权 这个borrow&#xff0c;很显然&#xff0c;就是不可变借用了 own就是可以写…

北邮22级信通院数电:Verilog-FPGA(12)第十二周实验(2)彩虹呼吸灯

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章&#xff0c;请访问专栏&#xff1a; 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 二.管脚分配 三.实验效果 一.代…

大势智慧荣获2023光合组织解决方案大赛人工智能赛道标杆奖及争先奖!

近日&#xff0c;2023年第三届光合组织解决方案大赛获奖名单正式公布。大势智慧以基于国产化平台的实景三维全流程解决方案&#xff0c;突破层层选拔&#xff0c;最终荣获“集智计划”&#xff08;人工智能赛道&#xff09;标杆奖及争先奖。 实景三维是我国的数字基础设施&…

【Go】protobuf介绍及安装

目录 一、Protobuf介绍 1.Protobuf用来做什么 2. Protobuf的序列化与反序列化 3. Protobuf的优点和缺点 4. RPC介绍 <1>文档规范 <2>消息编码 <3>传输协议 <4>传输性能 <5>传输形式 <6>浏览器的支持度 <7>消息的可读性和…

R语言实验三

1、读取一个文件并进行如下操作。 ①使用命令清空工作空间&#xff0c;使用read.table读取exam_1.txt文件&#xff0c;将文件保存到data变量中&#xff0c;数据第一行设置为列名&#xff0c;第一列是行名。 ②判断对象data是否为矩阵。 ③将对象转换为矩阵&#xff0c;记为d…

【SpringBoot3+Vue3】七【后续2】【番外篇】- (使用docke部署)

目录 一、maven打包后端服务 1、clean 2、package 3、查看jar包 二、部署java后端服务 1、使用dockerfile构建一个java17的镜像 1.1 使用dokcerfile构建容器命令 1.2 方式一 将jar打包进容器镜像 1.3 方式二 jar不打包进容器镜像&#xff0c;通过映射主机目录映射方式…

mysql 查询提取json 并去除双引号

1.建表语句 CREATE TABLE uset_test_demo (id bigint(20) NOT NULL AUTO_INCREMENT,context text,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT4 DEFAULT CHARSETutf8;2.源数据 {"title": "Harry Potter","author": "J.K. Rowling&qu…

Linux基础项目开发1:量产工具——文字系统(四)

前言&#xff1a; 前面我们已经把显示系统&#xff0c;输入系统的框架搭建好了&#xff0c;那么有了输入和显示&#xff0c;显示的内容应该是什么呢&#xff1f;这节就要让我们一起对显示的内容&#xff0c;文字系统进行搭建。 目录 一、数据结构抽象 1.描述一个文字的位图&a…

ubuntu系统下搭建本地物联网mqtt服务器的步骤

那么假如我们需要做一些终端设备&#xff0c;例如温湿度传感器、光照等物联网采集设备要接入呢&#xff1f;怎么样才能将数据报送到服务器呢&#xff1f; 以下内容基于我们ubuntu系统下的emqx成功启动的基础上。我们可以用浏览器键入控制板的地址&#xff0c;如果启动成功&…

特征相关性计较

Pearson相关系数 用于度量两个连续型变量之间的线性关系。取值范围在-1到1之间&#xff0c;0表示无线性关系&#xff0c;1表示完全正相关&#xff0c;-1表示完全负相关 import pandas as pd# 创建一个包含两个连续型变量的DataFrame data {Variable1: [1, 2, 3, 4, 5],Vari…

iOS简单理解区分MVC、MVP、MVVM

MVC、MVP、MVVM 前言 这篇文章简单介绍MVC、MVP和MVVM三种架构&#xff0c;并配上一个简单的Swift demo来区分MVC和MVVM两种架构。 MVC 传统MVC 下图是传统结构MVC&#xff0c;可以看到这种结构是紧耦合的&#xff0c;不推荐使用。 苹果的MVC 如下图&#xff0c;这是苹果…