ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql coalesce 和 with rollup

2022-02-17 11:02:37  阅读:214  来源: 互联网

标签:name title money rollup coalesce mysql test Id uid


1.WITH ROLLUP:在group分组字段的基础上再进行统计数据。

例子:首先在name字段上进行分组,然后在分组的基础上进行某些字段统计,表结构如下:

复制代码
CREATE TABLE test( Idint(11) NOT NULL AUTO_INCREMENT, titlevarchar(25) DEFAULT NULL COMMENT '标题', uidint(11) DEFAULT NULL COMMENT 'uid', moneydecimal(2,0) DEFAULT '0', name varchar(25) DEFAULT NULL, PRIMARY KEY (Id) ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4;
复制代码
存几条数据看看:

复制代码
INSERT INTO test.test (Id, title, uid, money, name) VALUES ('2', '国庆节', '2', '12', '周伯通'); INSERT INTO test.test (Id, title, uid, money, name) VALUES ('3', '这次是8天假哦', '3', '33', '老顽童'); INSERT INTO test.test (Id, title, uid, money, name) VALUES ('4', '这是Uid=1的第一条数据哦', '1', '70', '欧阳锋'); INSERT INTO test.test (Id, title, uid, money, name) VALUES ('5', '灵白山少主', '4', '99', '欧阳克'); INSERT INTO test.test (Id, title, uid, money, name) VALUES ('7', '九阴真经创始人', '3', '12', '小顽童'); INSERT INTO test.test (Id, title, uid, money, name) VALUES ('8', '双手互博', '2', '56', '周伯通'); INSERT INTO test.test (Id, title, uid, money, name) VALUES ('9', '销魂掌', '2', '19', '周伯通'); INSERT INTO test.test (Id, title, uid, money, name) VALUES ('10', '蛤蟆功', '1', '57', '欧阳锋'); INSERT INTO test.test (Id, title, uid, money, name) VALUES ('11', '绝杀掌', '3', '800', '小顽童'); INSERT INTO test.test (Id, title, uid, money, name) VALUES ('12', '九阴真经', '3', '84', '老顽童');
复制代码
分组统计:

SELECT name, SUM(money) as money FROM test GROUP BY name WITH ROLLUP;

可以看到按照name分组后对money求和统计了。上面看到 null 1242, 如何搞个别名字段比如 总金额:1242呢?也可以滴,咱们继续:

coalesce(a,b,c);
参数说明:如果anull,则选择b;如果bnull,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。
SELECT coalesce(name, '总金额'),name, SUM(money) as money FROM test GROUP BY name WITH ROLLUP;

上面可以看出,在数据汇总方面。用途还是很方便滴。

标签:name,title,money,rollup,coalesce,mysql,test,Id,uid
来源: https://www.cnblogs.com/promise1117/p/15903624.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有