美文网首页
MySQL 多表多维度分组统计

MySQL 多表多维度分组统计

作者: Tinyspot | 来源:发表于2024-04-18 15:05 被阅读0次

1. 多表分组统计

多表的数据进行 GROUP BY 操作时,通常涉及到多表连接(JOIN),以便将相关数据合并到一起进行分组

1.1 表数据

表 boot_order 数据

code tradeId
1001 20240301001
1002 20240301002
1003 20240301003

表 boot_indicator 数据

tradeId quantity tpCode mailNo
20240301001 1 SF SF001
20240301001 5 ZTO ZTO001
20240301001 4 ZTO ZTO002
20240301002 2 SF SF001
20240301003 3 SF SF003
20240301003 4 STO STO001

1.2 JOIN 合并表数据

JOIN ON 实际为 INNER JOIN ON

SELECT o.code, t.tradeId, t.quantity, t.tpCode, t.mailNo
FROM boot_order o
JOIN boot_indicator t ON t.tradeId = o.tradeId
ORDER BY o.code;
code tradeId quantity tpCode mailNo
1001 20240301001 1 SF SF001
1001 20240301001 5 ZTO ZTO001
1001 20240301001 4 ZTO ZTO002
1002 20240301002 2 SF SF001
1003 20240301003 3 SF SF003
1003 20240301003 4 STO STO001

1.3 group by 单字段

SELECT o.code, count(1) as total
FROM boot_order o
JOIN boot_indicator t ON t.tradeId = o.tradeId
GROUP BY o.code;
code total
1001 3
1002 1
1003 2

2. 子查询方式

SELECT o.code, t.tpCode, sum(t.quantity) as quantities, count(1) as total
FROM boot_order o
JOIN boot_indicator t ON t.tradeId = o.tradeId
GROUP BY o.code, t.tpCode;
code tpCode quantities total
1001 SF 1 1
1002 SF 2 1
1003 SF 3 1
1003 STO 4 1
1001 ZTO 9 2

3. WITH 子句

WITH temp AS (
    SELECT o.code, t.tradeId, t.quantity, t.tpCode, t.mailNo
    FROM boot_order o
    JOIN boot_indicator t ON t.tradeId = o.tradeId
)
SELECT code, tpCode, sum(quantity) as quantities, count(1) as total
FROM temp
GROUP BY code, tpCode;

4. 临时表

DROP TABLE IF EXISTS temp;
CREATE TEMPORARY TABLE temp AS
SELECT o.code, t.tradeId, t.quantity, t.tpCode, t.mailNo
FROM boot_order o
JOIN boot_indicator t ON t.tradeId = o.tradeId;

SELECT code, tpCode, sum(quantity) as quantities, count(1) as total
FROM temp
GROUP BY code, tpCode;

相关文章

  • 常用SQL记录[随时更新]

    分组统计,时间维度、类目维度,分组后排序 修改列名称

  • mysql语句案例

    MySQL分组统计并排序

  • MySql笔记——常用命令篇

    mysql 命令 DDL 语句 分组统计进阶 elt + interval 实现分组统计 case when实现分...

  • mysql多表分组查询

    前置条件 1、多表分组查询学生各科的成绩、总分、平均分 统计平均分大于70分 HAVING AVG(grade.s...

  • 02MySQL的多表操作

    MySQL的多表操作 1 多表关系 MySQL多表之间的关系可以概括为:一对一、一对多/多对一关系,多对多 1.1...

  • SQL查询语句1

    复杂查询 = 简单查询 + 限定查询 + 查询排序 + 多表查询 + 分组统计查询 + 子查询。 面对所有的复杂查...

  • mysql 分组统计参考

    根据日期,按照周、月、季、年对数据进行分组统计 一、前言 带着问题去学习,我觉得是一种非常有效的学习方法,不知...

  • 在Power BI中对数据分组

    根据某一个维度的数据,进行分组统计,是很常见的做法,比如按年龄对客户进行分组,按考试成绩进行分组统计等,这篇文章介...

  • 2018-09-05 mysql、redis

    1、多表联合查询 查询没有被购买过的商品 查询哪类商品是销量冠军 分组只能写分组字段和统计字段,写其它字段报错进入...

  • 排序、limit、统计、分组、多表关联、嵌套

    排序 关键字 order by 单字段排序格式select * from where 条件 order by 字段...

网友评论

      本文标题:MySQL 多表多维度分组统计

      本文链接:https://www.haomeiwen.com/subject/cafyxjtx.html