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;
【信息由网络或者个人提供,如有涉及版权请联系COOY资源网邮箱处理】
© 版权声明
本平台(www.cooy.cn)的一切软件、教程及内容信息仅限用于学习和研究,付费仅为收集整理归类费用;
不得将上述内容用于商业或者非法用途,否则一切后果用户自行承担负责。本平台资源、内容、信息均来自来自用户上传,版权争议及其他问题与本平台无关。
您必须在下载后的24个小时之内从您的电脑或手机中彻底删除上述下载内容,如果您喜欢该程序或内容,请支持正版以获取更好的服务。我们非常重视版权问题,如有侵权请发送邮件至下方邮件(655465@qq.com),敬请谅解!
如发现违法违规内容,请联系下方邮箱举报,我们收到后将会第一时间处理。
THE END
暂无评论内容