核心内容摘要
闪耀星河:从偶像到创业者的华丽转身,三上悠亚的无限可能
顺序书写顺序执行顺序核心说明
SELECT
SELECT筛选返回字段、执行字段计算或定义别名
FROM
FROM/JOIN确定查询基础表执行表关联操作内连接、左连接等
WHERE
WHERE过滤原始表数据不能使用聚合函数
GROUP BY
GROUP BY将 WHERE 过滤后的数据按指定字段分组
HAVING
HAVING过滤分组后的聚合结果可使用聚合函数
ORDER BY
ORDER BY对最终结果排序可使用 SELECT 定义的别名
LIMIT/OFFSET
LIMIT/OFFSET截取排序后的结果集限制返回行数-
聚合函数计算紧跟 GROUP BY执行 SUM/COUNT/AVG 等统计计算-
DISTINCT对 SELECT 筛选后的结果进行去重处理关键速记要点执行核心逻辑先确定数据源FROM/JOIN→ 过滤原始数据WHERE→ 分组GROUP BY→ 聚合计算 → 过滤分组结果HAVING→ 筛选字段SELECT→ 去重DISTINCT→ 排序ORDER BY→ 截取结果LIMITWHERE vs HAVINGWHERE 管 “分组前”不能用聚合函数HAVING 管 “分组后”可以用聚合函数别名使用ORDER BY 可以用 SELECT 定义的字段别名因为它执行在 SELECT 之后示例
先创建测试表并插入数据我们以电商订单表为例包含商品分类、订单金额、下单时间等字段贴合实际业务场景-- 创建订单表 CREATE TABLE t_order ( order_id INT PRIMARY KEY AUTO_INCREMENT COMMENT 订单ID, user_id INT NOT NULL COMMENT 用户ID, product_category VARCHAR(
NOT NULL COMMENT 商品分类, order_amount DECIMAL(10,
NOT NULL COMMENT 订单金额, order_time DATETIME NOT NULL COMMENT 下单时间 ) COMMENT 电商订单表; -- 插入测试数据 INSERT INTO t_order (user_id, product_category, order_amount, order_time) VALUES (101, 电子产品,
3
00,
14:30:
, (102, 电子产品,
2
00,
10:20:
, (103, 服装鞋帽,
2
00,
09:15:
, (104, 服装鞋帽,
5
00,
16:40:
, (105, 食品生鲜,
8
00,
11:00:
, (106, 电子产品,
1
00,
15:30:
, (107, 服装鞋帽,
1
00,
08:20:
, (108, 食品生鲜,
1
00,
19:10:
;
完整查询 SQL含分组、聚合、排序需求统计 2025 年 1 月各商品分类的订单总金额、订单数量筛选出总金额大于 1000 的分类按总金额降序排序SELECT product_category AS 商品分类, SUM(order_amount) AS 分类总金额, COUNT(order_id) AS 订单数量 FROM t_order WHERE order_time BETWEEN
00:00:00 AND
23:59:59 GROUP BY product_category HAVING SUM(order_amount) 1000 ORDER BY 分类总金额 DESC;
分步执行结果解析执行步骤对应子句执行结果说明1FROM t_order确定数据源为订单表获取 8 条原始订单数据2WHERE order_time BETWEEN...过滤出 2025 年 1 月的订单仍为 8 条测试数据均符合3GROUP BY product_category按商品分类分组得到 3 个分组电子产品、服装鞋帽、食品生鲜4聚合函数计算SUM/COUNT计算每个分组的总金额和订单数电子产品3999299919998997共 3 单服装鞋帽2995991991097共 3 单食品生鲜89129218共 2 单5HAVING SUM(order_amount) 1000过滤掉总金额≤1000 的分组保留电子产品、服装鞋帽2 个分组6SELECT筛选并返回商品分类、总金额、订单数量 3 个字段应用别名7ORDER BY 分类总金额 DESC按总金额降序排序最终结果顺序电子产品 → 服装鞋帽
最终查询结果商品分类分类总金额订单数量电子产品
8
003服装鞋帽
1