SQL入门第一天学习笔记
一、日期函数在日常做报表、统计同比环比、筛选时间段使用频次最高整理常用函数、语法、业务实例。1. curdate() 获取当前日期返回yyyy-MM-dd格式当日日期SELECT CURDATE(); -- 输出2026-07-092. now() 获取完整时间返回yyyy-MM-dd HH:mm:ss带时间戳的日期SELECT NOW(); -- 输出2026-07-09 09:56:49.03. date_add(日期, 间隔天数)日期向后偏移加天数SELECT DATE_ADD(CURDATE(),1);-- 获取明日日期SELECT DATE_ADD(CURDATE(),30);-- 获取30天之后日期4. date_sub(日期, 间隔天数)日期向前偏移减天数SELECT DATE_SUB(CURDATE(),1);-- 获取昨日日期业务常用做昨日数据筛选5. add_months(日期, 月份数)正数往后加月份负数往前减月份SELECT ADD_MONTHS(CURRENT_DATE, -1); -- 上月今日SELECT ADD_MONTHS(CURRENT_DATE, -12); -- 去年今日同比计算常用6. date_format(日期,格式)日期格式化分组统计必备SELECT DATE_FORMAT(CURDATE(),%Y-%m-01); -- 月初SELECT DATE_FORMAT(CURDATE(),%Y-%m-%d); -- 今天标准日期SELECT * FROM send_recordWHERE substr(post_date,1,10) between date_format(add_months(date_sub(current_date(),1),-1),%Y-%m-01)and date_format(add_months(date_sub(current_date(),1),-1),%Y-%m-%d) --昨天数据的上月同期SELECT * FROM send_recordWHERE DATE_FORMAT(send_date,%Y-%m) DATE_FORMAT(ADD_MONTHS(CURRENT_DATE,-1),%Y-%m); --上月数据7. datediff(结束日期,起始日期)计算两日期间隔天数SELECT SUM(CASE WHEN DATEDIFF(current_date(), substr(post_date,1,10)) 15 THEN 1 ELSE 0 END) AS 15天超期 ; --超期预警8. year()、month()、day() 拆分年月日用于按月、按年分组统计数据SELECT YEAR(curdate()),MONTH(curdate()),DAY(curdate()); --2026 7 99. weekofyear(date) 获取本年第几周SELECT WEEKOFYEAR(CURDATE()); --28WEEK(日期,模式)获取本年第几周可自定义一周起始日-- WEEK(date,1)周一算作一周首日报表最常用SELECT WEEK(CURDATE(),1); --2810. quarter() 获取季度SELECT QUARTER(CURDATE()); --311. DAYOFYEAR()获取当日是本年度第几天做长周期统计SELECT DAYOFYEAR(CURDATE()); --19012. WEEKDAY(date)规则周一0周日6SELECT WEEKDAY(CURDATE()); --3/*0 周一1 周二2 周三3 周四4 周五5 周六6 周日*/13. DAYOFWEEK(date)规则周日1周六7SELECT DAYOFWEEK(CURDATE()); --5二、常用单行函数及案例1. 空值判断函数1ifnull(字段,默认值)字段为NULL时替换为自定义数值报表避免空单元格-- 退件为空统一赋值0SELECT IFNULL(return_num,0) FROM send_record;-- where条件加上空值判断避免漏数据where ifnull(entrust_name,) not like %测试%sum(字段)、avg(字段)不会统计null只有count(*)统计全部行count(字段)不计入空值。实操避坑统计单据总量优先count(send_no)统计含空记录行数使用count(*)isnull()函数ISNULL(字段)为空返回1不为空返回0SELECT ISNULL(sign_time) FROM send_record;左连接查询出来右侧字段null除IFNULL还可以在where、having阶段过滤空数据-- 筛选所有未签收单据SELECT a.send_no FROM send_record aLEFT JOIN sign_info b ON a.send_no b.send_noWHERE b.send_no IS NULL;2coalesce() 多字段依次判空-- 优先取退件数为空取异常件都为空填0SELECT COALESCE(return_num,error_num,0) FROM send_record;2. 字符串函数1length() 获取字符长度SELECT LENGTH(cust_name) FROM send_record;2substr() 字符串截取-- 截取手机号前三位SELECT SUBSTR(phone,1,3) FROM send_record;3. 聚合函数分组统计必备sum、count、avg、max、min-- 统计本月总发函量、单据条数SELECT SUM(send_num),COUNT(send_no) FROM send_record;-- 单月最大单日发函、最小发函数量SELECT MAX(send_num),MIN(send_num) FROM send_record;-- 去重计数统计不重复发函单号SELECT count(distinct send_num) FROM send_record;4. 字符串函数1 concat()字段拼接拼接省份与单据编号SELECT CONCAT(province,_,send_no) AS prov_send FROM send_record;2 concat_ws()带分隔符拼接比concat更实用SELECT CONCAT_WS(-,province,cust_name,send_no) FROM send_record;3 upper()、lower()大小写转换SELECT UPPER(cust_addr),LOWER(cust_addr) FROM send_record;4 trim()、ltrim()、rtrim()去除首尾空格清洗脏数据-- 去除客户姓名两端空格SELECT TRIM(cust_name) FROM send_record;5 instr()查询字符首次出现位置SELECT INSTR(phone,7) FROM send_record;6 replace()字段内容替换脱敏手机号SELECT REPLACE(phone,SUBSTR(phone,4,4),****) FROM send_record;7 lpad()、rpad()左右补位统一单据编码长度SELECT LPAD(send_no,10,0) FROM send_record;5. 数值数学函数1 round() 四舍五入计算签收率保留两位小数SELECT ROUND(SIGN_COUNT/SEND_COUNT*100,2) AS sign_rate FROM send_record;2 ceil() 向上取整、floor()向下取整SELECT CEIL(12.1),FLOOR(12.9); -- 13 、123 mod() 取余数单号奇偶分类SELECT MOD(send_no,2) FROM send_record;4 abs() 绝对值处理异常负数数据SELECT ABS(error_num) FROM send_record;6. 条件判断函数1 if() 简易判断简化单层case when语法IF(判断条件,成立返回值,不成立返回值)SELECT send_no,IF(sign_time IS NULL,未签收,已签收) AS sign_state FROM send_record;2 nullif(a,b) 两个字段相等返回null不等返回第一个字段SELECT NULLIF(send_num,return_num) FROM send_record;7. 窗口函数数据分析中做排名、行号、分区统计1. row_number() 不重复排名SELECT send_no,send_num,ROW_NUMBER() OVER(PARTITION BY province ORDER BY send_num DESC) AS rnFROM send_record;2. rank()、dense_rank() 并列排名三、其他1. 四种表连接方式附带业务案例现有两张表send_record发函主表单据号、发函日期、寄件省份sign_info签收附表单据号、签收时间、签收状态关联字段单据号 send_no1 内连接 inner join可简写join只返回两张表可以匹配上的数据丢弃无签收记录单据SELECT a.send_no,a.send_date,b.sign_statusFROM send_record aINNER JOIN sign_info bON a.send_no b.send_no;2 左连接 left join日常数据分析使用最多以左表发函表为全部基准所有发函单据全部保留没有签收记录右侧字段填充NULLSELECT a.send_no,a.send_date,IFNULL(b.sign_status,未签收)FROM send_record aLEFT JOIN sign_info bON a.send_no b.send_no;业务用处统计全部发函单据区分已签收、未签收数据计算签收率。3 右连接 right join以右侧签收表为基准展示所有签收记录无对应发函单据左侧为空工作场景偏少。4 全连接 full join展示两张表全部数据无法匹配字段统一为空。

相关新闻

PVZ Toolkit终极指南:3步掌握植物大战僵尸修改器完整使用技巧

PVZ Toolkit终极指南:3步掌握植物大战僵尸修改器完整使用技巧

PVZ Toolkit终极指南:3步掌握植物大战僵尸修改器完整使用技巧 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 还在为植物大战僵尸中阳光不足而烦恼吗?PVZ Toolkit这款终极修…

2026/7/10 14:37:36阅读更多 →
3分钟学会Mermaid在线编辑器:免费制作专业图表的终极指南

3分钟学会Mermaid在线编辑器:免费制作专业图表的终极指南

3分钟学会Mermaid在线编辑器:免费制作专业图表的终极指南 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-edi…

2026/7/10 14:37:35阅读更多 →
ISOM8710数字隔离芯片与PIC18F2682的高压安全设计

ISOM8710数字隔离芯片与PIC18F2682的高压安全设计

1. 高压安全隔离的技术背景与核心需求在工业控制、电力监测和医疗设备等场景中,高压与低压电路之间的安全隔离是生死攸关的设计要素。想象一下,当380V交流电机的工作电流意外耦合到5V的微控制器信号线上,不仅会造成设备损毁,更可能…

2026/7/10 14:37:35阅读更多 →
工业自动化中TPD2015FN与PIC18F4682的驱动控制方案

工业自动化中TPD2015FN与PIC18F4682的驱动控制方案

1. 项目背景与核心器件选型 在工业自动化控制系统中,电感和电阻负载的精确控制一直是关键挑战。TPD2015FN作为东芝的8通道高端智能功率开关IC,其40V耐压和每通道1A的驱动能力,特别适合电磁阀、继电器等感性负载的驱动场景。而PIC18F4682微控制…

2026/7/10 15:37:46阅读更多 →
校园时钟靠谱采购渠道及供应商筛选指南

校园时钟靠谱采购渠道及供应商筛选指南

速览本文针对教育领域校园时钟采购全链路需求,梳理主流采购渠道优劣势、供应商核心筛选标准、头部厂商综合对比及不同场景适配建议,附采购避坑指南,可作为高校、教育局、职业院校等主体的采购决策参考。长沙天穹等头部时频设备供应商在校园场…

2026/7/10 15:37:46阅读更多 →
从电视盒子到全能服务器:Armbian系统在Amlogic设备上的完全指南

从电视盒子到全能服务器:Armbian系统在Amlogic设备上的完全指南

从电视盒子到全能服务器:Armbian系统在Amlogic设备上的完全指南 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l,…

2026/7/10 15:37:45阅读更多 →
Excel常见函数、常见操作记录

Excel常见函数、常见操作记录

一、匹配函数VLOOKUP的应用 VLOOKUP的四个参数的介绍: lookup_value:查找值。 table_array:查找范围,从查找值所在列开始框选,即查找范围第一列必须为查找值所在列数。查找范围需要进行固定,防止批量计算时…

2026/7/10 15:37:45阅读更多 →
MyBatis01-MyBatis入门程序

MyBatis01-MyBatis入门程序

一、JDBC 的主要问题(缺点)虽然 JDBC 是 Java 操作数据库的标准方式,但它存在很多痛点:1. 代码冗余严重每次操作数据库都要写很多重复代码,如:建立连接创建 PreparedStatement设置参数执行 SQL处理结果集 R…

2026/7/10 15:37:45阅读更多 →
MP2672A双节锂电池平衡充电与STM32控制实战

MP2672A双节锂电池平衡充电与STM32控制实战

1. MP2672A芯片深度解析:双节锂电平衡充电的核心引擎在锂电池组应用中,电压不均衡是导致容量衰减和安全事故的首要元凶。MP2672A作为MPS推出的高集成度解决方案,完美解决了2节串联锂电的充电与均衡难题。这款QFN-18封装(2mm3mm&am…

2026/7/10 15:32:44阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/10 12:10:00阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/10 12:29:21阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/10 4:59:05阅读更多 →
浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比当你在浏览器地址栏敲入一个网址时,背后可能隐藏着一场关于"要不要重新下载资源"的精密博弈。这场博弈的裁判是HTTP缓存机制,而304状态码则是这场博弈…

2026/7/10 0:00:01阅读更多 →
RoboWits:面向创造性问题求解的双臂机器人认知推理基准

RoboWits:面向创造性问题求解的双臂机器人认知推理基准

1. 项目概述:这不是又一个机器人抓取数据集,而是一次对“思考力”的压力测试 RoboWits——这个名字里藏着两个关键信号:“Robo”直指物理世界中的具身智能体,“Wits”则毫不掩饰地指向人类最核心的认知能力:机敏、判断…

2026/7/10 0:00:01阅读更多 →
5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Windows…

2026/7/10 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/10 13:39:09阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/9 15:50:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/9 14:14:17阅读更多 →