DQL 分组查询、分页查询 技术笔记

一、分组查询 group by

分组:将数据表记录按照指定字段进行分组,常搭配聚合函数完成分组统计。

1.基础语法

sql 复制代码
select 分组字段/聚合函数
from 表名
[where 条件]
group by 分组列名 [having 条件]
[order by 排序字段];

重要规则

  1. select 后尽量不要使用 *,分组后*只会显示每组第一条数据,业务上无意义;
  2. select 后面只允许写分组字段 和聚合函数;
  3. 执行顺序:
    ① where 过滤原始表数据 → ② group by 分组 → ③ having 过滤分组之后的数据

代码示例

sql 复制代码
-- 示例1:按照性别分组,统计每种性别的学生人数
select stu_gender,count(stu_num) from stus group by stu_gender;

-- 示例2:按照性别分组,计算每组学生平均年龄
select stu_gender,avg(stu_age) from stus group by stu_gender;

-- 示例3:按年龄分组,统计每组人数,筛选人数大于1的分组,按年龄升序
select stu_age,count(stu_num)
from stus
group by stu_age
having count(stu_num)>1
order by stu_age;

-- 示例4:先筛选男生,按年龄分组,筛选人数大于1的分组,年龄升序排列
select stu_age,count(stu_num)
from stus
where stu_gender='男'
group by stu_age
having count(stu_num)>1
order by stu_age;

where 和 having 核心区别

  • where:分组前过滤原始数据,不能识别聚合函数
  • having:分组后过滤分组结果,可以使用聚合函数

二、分页查询 limit

数据量较大时,分段返回数据,实现分页展示。

1.语法格式

sql 复制代码
select ...
from ...
where ...
limit param1,param2;
  • param1:起始索引,从0开始
  • param2:查询返回的记录条数

分页通用公式

已知:pageNum 当前页码,pageSize 每页条数

sql 复制代码
select * from stus [where ...] limit (pageNum-1)*pageSize,pageSize;

代码示例

场景:数据表共10条数据,每页展示3条

sql 复制代码
-- 第1页 (1-1)*3 = 0
select * from stus limit 0,3;

-- 第2页 (2-1)*3 = 3
select * from stus limit 3,3;

-- 第3页 (3-1)*3 = 6
select * from stus limit 6,3;

-- 第4页 (4-1)*3 = 9
select * from stus limit 9,3;

三、DQL完整语句顺序(重点)

书写顺序(开发写SQL遵循这个顺序)

select → from → where → group by → having → order by → limit

数据库真实执行顺序

from → where → group by → having → select → order by → limit

sql 复制代码
-- 完整DQL标准模板示例
select stu_gender,avg(stu_age) avg_age
from stus
where stu_age >= 16
group by stu_gender
having avg_age > 18
order by avg_age desc
limit 0,2;
相关推荐
Young Doro1 天前
从 DV 表示到 MI 下界,再到“置换技巧“(含“指数倾斜“完整推导)
笔记
ACP广源盛139246256731 天前
PCIe Gen3 交换芯片选型笔记:中小通道扩展方案 IX7012@ACP 评估
笔记·硬件架构·硬件工程·pcie·国产芯片
职豚求职小程序刷题1 天前
国投证券笔试测评题型揭秘
笔记
Nuanyt1 天前
LeetCode Hot100 刷题笔记 · 普通数组专题
java·笔记·算法·leetcode
职豚求职小程序1 天前
蒙牛27秋招|数智化未来星测评重点整理✅
笔记
沪上企服通1 天前
从票据到凭证的数据血缘:代账系统的 traceability 与可审计回放设计笔记
笔记
春弦_1 天前
LeetCode Hot 100 刷题笔记
笔记·leetcode·哈希算法
叼烟扛炮1 天前
Linux 学习笔记(四):文件检索与管道重定向
linux·笔记·学习
愤怒火龙果1 天前
蓝队笔记整理04 安全设备、内网处置与云上防护
笔记·网络安全
果壳science1 天前
张祥前最新研究成果登上SCI期刊!
笔记·嵌入式硬件·算法·硬件工程·几何学