SQL 函数记不住?一张表全收好(高频 18 个,覆盖 80% 场景) 做了十年数据分析SQL 函数我天天用但说真的——没人能全记住。真要用的时候都是翻笔记。所以这篇就是我给自己、也是给你整理的高频函数速查表按聚合 / 字符串 / 日期 / 条件 / 数值分成 5 组每个给一句话用途 最常用写法。建议先收藏写 SQL 时对着抄用着用着就熟了。「SQL 从入门到精通」系列持续更新中关注我不迷路每篇都是实战干货——踩坑、速查、基础、进阶全覆盖。⚠️ 小提示MySQL / Oracle / PostgreSQL 在函数名上略有差异文末标了同一句在不同库可能要微调。 练习表复制即可建表随时练手本系列所有文章都用这 4 张表建一次就能跟着全系列练。DROPTABLEIFEXISTS员工表;CREATETABLE员工表(员工idINTPRIMARYKEY,姓名VARCHAR(20),部门VARCHAR(20),工资DECIMAL(10,2),邮箱VARCHAR(50),手机VARCHAR(20),入职日期DATE);INSERTINTO员工表(员工id,姓名,部门,工资,邮箱,手机,入职日期)VALUES(1,张三,技术部,9000.00,zhangsandemo.com,13800000001,2019-03-01),(2,李四,技术部,9000.00,lisidemo.com,13800000002,2020-07-15),(3,王五,销售部,9200.00,wangwudemo.com,13800000003,2018-01-10),(4,赵六,销售部,9200.00,zhaoliudemo.com,13800000004,2021-05-20);DROPTABLEIFEXISTS订单表;CREATETABLE订单表(订单idINTPRIMARYKEY,员工idINT,订单金额DECIMAL(10,2),下单时间DATETIME,付款时间DATETIME,状态VARCHAR(20));INSERTINTO订单表(订单id,员工id,订单金额,下单时间,付款时间,状态)VALUES(101,1,3000.00,2026-01-10 10:00:00,2026-01-10 10:05:00,已付款),(102,1,2500.00,2026-02-15 14:00:00,2026-02-15 14:10:00,已付款),(103,3,4000.00,2026-03-20 09:30:00,2026-03-20 09:40:00,已付款),(104,2,1500.00,2026-04-05 16:00:00,NULL,待付款);DROPTABLEIFEXISTS用户表;CREATETABLE用户表(用户idINTPRIMARYKEY,姓名VARCHAR(20),手机VARCHAR(20),邮箱VARCHAR(50),地址VARCHAR(100));INSERTINTO用户表(用户id,姓名,手机,邮箱,地址)VALUES(1,张三,13900000001,zhangsandemo.com,北京市朝阳区),(2,李四,13900000002,lisidemo.com,上海市浦东新区),(3,王五,13900000003,wangwudemo.com,广州市天河区);DROPTABLEIFEXISTS任务表;CREATETABLE任务表(任务idINTPRIMARYKEY,员工idINT,备注VARCHAR(100),状态VARCHAR(20));INSERTINTO任务表(任务id,员工id,备注,状态)VALUES(1,1,完成需求评审,已完成),(2,2,NULL,进行中),(3,3,修复线上bug,已完成),(4,4,NULL,待分配);一、聚合函数分组统计必用函数用途示例COUNT(*)数行数含 NULL 行SELECT COUNT(*) FROM 员工表COUNT(列)数某列非 NULL值SELECT COUNT(邮箱) FROM 员工表SUM(列)求和SELECT SUM(工资) FROM 员工表AVG(列)平均值忽略 NULLSELECT AVG(工资) FROM 员工表MAX(列)/MIN(列)最大 / 最小值SELECT MAX(工资) FROM 员工表踩坑提醒AVG和COUNT(列)都跳过 NULL算占比时容易算错先想清楚要不要把 NULL 算进去。二、字符串函数清洗文本用得最多函数用途示例CONCAT(a,b)拼接字符串SELECT CONCAT(姓名,部门) FROM 员工表SUBSTR(s,n,len)截取子串Oracle/PG 用SUBSTRINGSELECT SUBSTR(手机,1,3) FROM 用户表LENGTH(s)字符串长度SELECT LENGTH(姓名) FROM 员工表TRIM(s)去首尾空格SELECT TRIM(姓名) FROM 员工表REPLACE(s,a,b)把 a 替换成 bSELECT REPLACE(地址,市,) FROM 用户表UPPER(s)/LOWER(s)转大写 / 小写SELECT UPPER(姓名) FROM 员工表经验脏数据八成是空格和大小写搞的鬼进库前TRIMUPPER先洗一遍后面少踩坑。三、日期函数按时间统计绕不开函数用途示例MySQL 写法NOW()/CURDATE()当前时间 / 今天SELECT CURDATE()DATE(时间列)取日期部分SELECT DATE(下单时间) FROM 订单表DATEDIFF(a,b)两日期相差天数SELECT DATEDIFF(付款时间,下单时间) FROM 订单表DATE_FORMAT(d,%Y-%m)格式化MySQLSELECT DATE_FORMAT(下单时间,%Y-%m) FROM 订单表差异Oracle 用SYSDATE和TO_CHAR(d,YYYY-MM)PostgreSQL 用CURRENT_DATE和TO_CHAR(d,YYYY-MM)。换库记得改写法。四、条件函数分组打标签神器函数用途示例CASE WHEN ... THEN ... ELSE ... END多条件分支最常用SELECT CASE WHEN 工资10000 THEN 高 ELSE 普通 END FROM 员工表IF(条件,真,假)二选一MySQLSELECT IF(工资10000,高,普通) FROM 员工表COALESCE(a,b,...)返回第一个非 NULL 值SELECT COALESCE(手机,邮箱,无) FROM 用户表CASE WHEN是万能的所有分层 / 打标 / 区间需求都靠它务必练熟。五、数值函数算账用函数用途示例ROUND(x,n)四舍五入保留 n 位SELECT ROUND(工资/30,1) FROM 员工表ABS(x)绝对值SELECT ABS(工资-10000) FROM 员工表CEIL(x)/FLOOR(x)向上 / 向下取整SELECT CEIL(订单金额/1000) FROM 订单表 站队时间CASE WHEN vs IF你平时写哪个我站CASE WHEN——原因很简单IF 只有 MySQL 能用。当年我从 MySQL 迁移到 Oracle几百个IF(条件,a,b)全得改成CASE WHEN ... END改了整整一周改完眼睛都花了 。如果你只用 MySQLIF 确实写着短但万一以后换 Oracle/PostgreSQL/SQL Server全得重来。你呢评论区站个队A 队CASE WHEN 党跨库无忧B 队IF 党MySQL 专属写着爽C 队我两个都用过有故事要说 文末签名栏 我是Hello_world12131十年数据分析经验。这篇有用的话点个赞 收藏顺便关注我——SQL 避坑、速查表、基础教程持续更新关注不迷路。系列目录SQL 从入门到精通 - 完整路线图建议收藏相关推荐新手学 SQL 最常踩的 3 个坑附避坑清单SQL 多表关联查询入门INNER / LEFT / RIGHT JOIN⏭️下篇预告《篇03_ORDER BY_GROUP BY_HAVING_排序分组筛选》——基础篇第三弹搞定查询的最后三块拼图

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/10/1 19:32:24
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/30 21:32:07
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/10/2 15:29:32
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/10/3 7:41:27
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 19:32:35
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/30 21:32:11

日新闻

周新闻

月新闻