sql总结(高阶用法)

最近在做账单统计的需求,需要写较多的sql,也用到了很多以前没有用过的sql用法,通过本篇文章进行总结。

1.SUM() 和 CASE WHEN…

SUM(CASE WHEN `change_type` = -1 THEN total_amount ELSE 0 END) AS totalExpenditure

这是一个典型的用法,通过 SUM() 结合 CASE WHEN 条件,对满足条件的行的某个字段进行求和。在这个例子中,对于 change_type = -1 的行,将其 total_amount 字段进行求和,而对于不满足条件的行,将其置为0。最终获得总支出。

2.COUNT() 和 CASE WHEN…

COUNT(CASE WHEN `v_type` = -1 THEN -1 END) AS expenditureCount

这个用法是通过 COUNT() 结合 CASE WHEN,统计满足条件的行数。在这个例子中,对于 v_type = -1 的行返回 -1,最后通过 COUNT() 统计 -1 的数量,得到支出的个数。

3.COALESCE()

undefined COALESCE(SUM(total_amount),0.0) as totalAmount

COALESCE() 函数用于处理 NULL 值,如果 SUM(total_amount) 为 NULL,则将其替换为 0.0。这样可以避免在统计过程中出现 NULL 值导致的问题。

4.BETWEE

undefined `stat_time` BETWEEN #{startOfTime} AND #{endOfTime}"

BETWEEN 用于筛选某个范围内的值。在这个例子中,筛选出 stat_time 位于 startOfTime 和 endOfTime 之间的记录,包括这两个时间点。

5.UNION

SELECT ...
UNION
SELECT ...

UNION 用于合并两个查询的结果集,去除重复的行。在这个例子中,通过两个 SELECT 语句统计不同条件下的数据,并将结果集合并在一起,相当于求并集。

6. GROUP BY a,b 组合分组

 GROUP BY a,b;

GROUP BY 用于将结果集按照指定的列进行分组。在这个例子中,根据列 a 和 b 进行组合分组。

7. 正则表达式

+ "    CASE  "+ "        WHEN causetype = 'A' AND comment REGEXP 'gid为【([0-9]+)】的xxxx' THEN  "+ "            CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(comment, 'gid为【', -1), '】', 1) AS UNSIGNED) "+ "        ELSE 0  "+ "    END AS ngid, "

这里使用了正则表达式 (REGEXP) 来匹配符合特定条件的 comment 字段。当 causetype = ‘A’ 且 comment 字段符合正则表达式时,提取出其中的 gid 值。如果不符合条件,则返回 0。

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

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

相关文章

【设计模式】腾讯面经:原型模式怎么理解?

什么是原型模式? 设计模式是编程世界的基石,其中原型模式无疑是一种常用而又高效的创建对象的手段。那么,什么是原型模式呢?又该如何去实现它? 在软件工程中,原型模式是一种创建型设计模式。我们可以这样…

Python可视化库:数据呈现的多彩世界

Python可视化库:数据呈现的多彩世界 一、Matplotlib二、Seaborn三、Plotly四、Bokeh五、pyecharts六、总结 在当今数据驱动的时代,将复杂的数据集转换成易于理解的图形和图表变得越来越重要。Python作为一种流行的编程语言,其强大的可视化库为…

2024獬豸杯完整Writeup

文章目录 手机手机基本信息- 1、IOS手机备份包是什么时候开始备份的。(标准格式:2024-01-20.12:12:12)手机基本信息- 2、请分析,该手机共下载了几款即时通讯工具。(标准格式:阿拉伯数字)手机基本信息- 3、手…

Zerosync:构建基于STARK的Bitcoin证明系统

1. 引言 前序博客: BitcoinSTARK: ZeroSync & Khepri Robin Linus、Tino Steffens、Lukas George 等人成立了一个名为 ZeroSync 协会(ZeroSync Association)的瑞士非营利组织,该组织将牵头开发比特币证明系统。ZeroSync 于…

共享自助空间打破传统束缚,创新消费体验

共享自助空间是指将传统的办公空间、工作空间、社交空间等资源进行共享,为个体或小型团体提供灵活的使用服务和自主管理的空间。这种模式使得个人可以在一个共享的环境中独立办公、工作或社交,并能享受到共享资源和服务的便利,比如共享茶室、…

【数据分析】numpy基础第四天

文章目录 1. 前天教程与巩固1.1. 第一天1.2. 第二天1.3. 第三天 2. 问题解析2.1. 第一天1. 如何创建Numpy数组2. 如何获取第3个元素3. 如何获取包含第1、2、3行的切片 2.2. 第二天4. 如何将一个有10个元素的一维数组,转变为10行1列的二维数组5. 如何在垂直或者水平上…

超温报警器电路设计方案汇总

超温报警器电路设计方案(一) 该超温报警电路由温度采集电路、继电器控制电路、延时电路、秒脉冲信号发生器、计数译码电路、数显电路、报警电路共同构成。下面来详细介绍一下各部分电路的功能。 温度采集电路 温度采集电路由负温度系数的热敏电阻RW、R…

CodeComplete-ReadingNote

《代码大全》CODECOMPLETE2 apollowangjunbo/Code-Complete-reading-note: 《代码大全》读书笔记 (github.com) 第一章 欢迎进入软件构建的世界 软件开发过程中各种不同的活动: 定义问题(problem definition)需求分析(requireme…

PDF标准详解(一)——PDF文档结构

已经很久没有写博客记录自己学到的一些东西了。但是在过去一年的时间中自己确实又学到了一些东西。一直攒着没有系统化成一篇篇的文章,所以今年的博客打算也是以去年学到的一系列内容为主。通过之前Vim系列教程的启发,我发现还是写一些系列文章对自己的帮…

Day01-变量和数据类型课后练习-参考答案

文章目录 1、输出你最想说的一句话!2、定义所有基本数据类型的变量和字符串变量3、用合适类型的变量存储个人信息并输出4、定义圆周率PI5、简答题 1、输出你最想说的一句话! 编写步骤: 定义类 Homework1,例如:Homewo…

04基于人工智能大模型的智慧教育应用

04基于人工智能大模型的智慧教育应用 赛题关键:AIGC教育的应用 一:确定应用方向 选取待解决的教育领域核心问题,确定产生怎么样的产品,基于大模型解决什么样的问题 可参考实例一: 高级版作业帮 基于大模型启发式…

Day48 动态规划part09 198. 打家劫舍 213. 打家劫舍 II 337. 打家劫舍 III

Day48 动态规划part09 198. 打家劫舍 213. 打家劫舍 II 337. 打家劫舍 III 198. 打家劫舍 class Solution { public:int rob(vector<int>& nums) {vector<int> dp(nums.size()); //考虑下标i的最大偷窃金额dp[i]if(nums.size()0) return 0;if(nums.size()1) …

测试C#调用OpenCvSharp和IronOcr从摄像头中识别文字

学习了基于OpenCvSharp获取摄像头数据&#xff0c;同时学习了基于IronOcr的文字识别用法&#xff0c;将这两者结合即是从摄像头中识别文字。本文测试C#调用OpenCvSharp和IronOcr从摄像头中识别文字的基本用法、。   新版Winform项目&#xff0c;在Nuget包管理器中添加以下程序…

案例分析技巧-软件工程

一、考试情况 需求分析&#xff08;※※※※&#xff09;面向对象设计&#xff08;※※&#xff09; 二、结构化需求分析 数据流图 数据流图的平衡原则 数据流图的答题技巧 利用数据平衡原则&#xff0c;比如顶层图的输入输出应与0层图一致补充实体 人物角色&#xff1a;客户、…

告别繁琐!轻松创建旧版Spring Boot项目!

推荐文章 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;一&#xff09; 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;二&#xff09; 给软件行业带来了春天——揭秘Spring究竟是何方神圣&#xff08;三&#xff09; 给软件行业带来了春天—…

强化学习原理python篇06——DQN

强化学习原理python篇05——DQN DQN 算法定义DQN网络初始化环境开始训练可视化结果 本章全篇参考赵世钰老师的教材 Mathmatical-Foundation-of-Reinforcement-Learning Deep Q-learning 章节&#xff0c;请各位结合阅读&#xff0c;本合集只专注于数学概念的代码实现。 DQN 算…

[Python图像处理] 使用OpenCV创建深度图

使用OpenCV创建深度图 双目视觉创建深度图相关链接双目视觉 在传统的立体视觉中,两个摄像机彼此水平移动,用于获得场景上的两个不同视图(作为立体图像),就像人类的双目视觉系统: 通过比较这两个图像,可以以视差的形式获得相对深度信息,该视差编码对应图像点的水平坐标的…

基于Python 网络爬虫和可视化的房源信息的设计与实现

摘 要 一般来说&#xff0c;在房地产行业&#xff0c;房源信息采集&#xff0c;对企业来说至关重要&#xff0c;通过人工采集数据的方式进行数据收集&#xff0c;既耗时又费力&#xff0c;影响工作效率&#xff0c;还导致信息时效性变差&#xff0c;可靠性偏低&#xff0c;不利…

QWT开源库使用

源代码地址&#xff1a;Qwt Users Guide: Qwt - Qt Widgets for Technical Applications Qwt库包含GUI组件和实用程序类&#xff0c;它们主要用于具有技术背景的程序。除了2D图的框架外&#xff0c;它还提供刻度&#xff0c;滑块&#xff0c;刻度盘&#xff0c;指南针&#xf…

matlab appdesigner系列-仪器仪表4-旋钮(离散)

旋钮&#xff08;离散&#xff09;&#xff0c;或叫分档旋钮&#xff0c;跟旋钮的连续性相区别&#xff0c;呈分档性。 示例&#xff1a;模拟空调档位切换 操作步骤&#xff1a; 1&#xff09;将旋钮&#xff08;离散&#xff09;、信号灯、标签拖拽到画布上&#xff0c;并设…