sql总结(高阶用法)

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

1.SUM() 和 CASE WHEN...

java 复制代码
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...

java 复制代码
COUNT(CASE WHEN `v_type` = -1 THEN -1 END) AS expenditureCount

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

3.COALESCE()

java 复制代码
undefined COALESCE(SUM(total_amount),0.0) as totalAmount

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

4.BETWEE

java 复制代码
undefined `stat_time` BETWEEN #{startOfTime} AND #{endOfTime}"

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

5.UNION

java 复制代码
SELECT ...
UNION
SELECT ...

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

6. GROUP BY a,b 组合分组

java 复制代码
 GROUP BY a,b;

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

7. 正则表达式

java 复制代码
+ "    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。

相关推荐
倒流时光三十年10 小时前
SpringBoot 数据库同步 Elasticsearch 性能优化
数据库·spring boot·elasticsearch
码农小卡拉11 小时前
深入解析Spring Boot文件加载顺序与加载方式
java·数据库·spring boot
怣5011 小时前
MySQL多表连接:全外连接、交叉连接与结果集合并详解
数据库·sql
wjhx11 小时前
QT中对蓝牙权限的申请,整理一下
java·数据库·qt
冰暮流星11 小时前
javascript之二重循环练习
开发语言·javascript·数据库
万岳科技系统开发12 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
冉冰学姐12 小时前
SSM智慧社区管理系统jby69(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·管理系统·智慧社区·ssm 框架
杨超越luckly12 小时前
HTML应用指南:利用GET请求获取中国500强企业名单,揭秘企业增长、分化与转型的新常态
前端·数据库·html·可视化·中国500强
斯普信专业组12 小时前
构建基于MCP的MySQL智能运维平台:从开源服务端到交互式AI助手
运维·mysql·开源·mcp
Elastic 中国社区官方博客12 小时前
Elasticsearch:Workflows 介绍 - 9.3
大数据·数据库·人工智能·elasticsearch·ai·全文检索