sql: 分组后按照分组规则拼接字符串 — group by与 group_concat()

sql: 分组后按照分组规则拼接字符串 — group by与 group_concat()Markdown编辑器写博客小技巧本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗Ctrl+B斜体Ctrl+I引…

大家好,又见面了,我是你们的朋友全栈君。

分组后按照分组规则拼接字符串

cla代表学生学习的课程,num代表该学生学习该门课程的次数。

建表语句:

create table st(
	id int,
	name varchar(50),
	cla varchar(50),
	num int
);

插入数据:

insert into st values(1,'张三','高数',3);
insert into st values(1,'张三','大学物理',2);
insert into st values(1,'张三','计量经济学',3);
insert into st values(2,'李四四','高数',2);
insert into st values(2,'李四四','计量经济学',4);
insert into st values(3,'王五','高数',3);
insert into st values(3,'王五','大学物理',3);

原表数据:
这里写图片描述

group by的使用

查询出学习次数的总和

按id或name分类,查询num字段的总和
查询结果如图:
这里写图片描述

sql语句如下:

select 
	id,
	name,
	sum(num) count 
from st 
group by id,name;

或者

select 
	id,
	max(name) name,
	sum(num) count 
	from st 
group by id;

还有个恶心的:

select
	s1.id id,
	s1.name name,
	s2.count1 
from st s1 
join (select id,sum(num) count1 from st group by id ) s2
	on s1.id=s2.id 
where s1.id in (select id  from st group by id) 
group by id,name;

(这篇文章是2018-08-10 09:32:37写的,我2021年5月13日 10点37分看了一下,上面这个sql写的什么玩意。。。日常工作和面试什么的,非常不建议使用这种写法)

group_concat() 的使用

查询学生学习次数的总和以及学习课程

按id或name分类,查询num的总和,同时显示所有的cla

查询结果如图:
这里写图片描述

要达到这种效果,需要用到group_concat() :
1、功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

2、语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )

sql如下:

SELECT 
	id, 
	name,
	group_concat(cla separator '-') cla,
	sum(num) num
FROM st 
GROUP BY id,name;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/142725.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • IOS开展:导航中添加多个button并加入左侧logo

    IOS开展:导航中添加多个button并加入左侧logo

    2022年1月14日
    54
  • Over Permission(越权)学习「建议收藏」

    Over Permission(越权)学习「建议收藏」OverPermission(越权)用户A的权限小于用户B的权限,此时用用户A的权限去操作用户B的数据,如果能够操作成功,就称之为越权操作。越权漏洞一般容易出现在权限页面(需要登录的页面)增、删、改、查的地方。越权漏洞形成的原因是后台使用了不合理的权限校验规则导致的。当用户对权限页面内的信息进行增、删、改、查的操作时,后台对当前用户的权限进行校验,看是否具备操作的权限,从而给出响应。如果校验规则过于简单,就容易出现越权漏洞。防止越权漏洞1、使用最小权限原则对用户进行赋权;2、使用

    2022年6月22日
    24
  • CSS面试题总结[通俗易懂]

    CSS面试题总结[通俗易懂]前面的话小柒前面总结了与HTML相关的面试题,这篇文章总结CSS相关面试题。题目(1)盒子模型的理解?盒模型分为两种:标准模式与混杂模式(IE模式)标准盒子模型IE盒子模型一般的我们所说的width、height都是指标准盒子模型下的width(也就是content)。(2)CSS中哪些属性可以同父元素继承?字体系列:font-family,font-siz…

    2022年5月6日
    27
  • Android面试题集(2020)

    Android面试题集(2020)Android面试题模板前言目录总结前言秋招在即,计蒙在国庆期间为粉丝整理了一套Android初级面试题集如需获取pdf版本,可于公众号:《计蒙不吃鱼》进行下载目录1.Android面试题之Activity篇2.Android面试题之Service篇3.Android面试题之BroadcastReceiver篇4.Android面试题之ContentProvider篇5.Activity面试题之Intent篇6.Android面试题之Listview篇7.Android面试题之Fr

    2022年5月12日
    42
  • Jdbc executeUpdate 返回值

    Jdbc executeUpdate 返回值原文地址:http://nkadun.iteye.com/blog/1435333javaapi里是这样说的executeUpdateintexecuteUpdate()throwsSQLExceptionExecutestheSQLstatementinthisPreparedStatementobject,whichmustbeanSQL

    2022年10月20日
    1
  • JY02调试-无刷电机驱动芯片[通俗易懂]

    JY02调试-无刷电机驱动芯片[通俗易懂]JY02是国内研制的无刷电机驱动芯片,相比于之前的DRV11873,少了集成的MOSFET,只能通过外部扩展MOSFET驱动芯片和功率管达到功率输出的目的,虽然在电路设计上增加了复杂度,但可以极大的提高电机驱动的输出功率,由于使用了外部的MOSFET,输出功率基本由功率MOSFET的驱动能力决定。JY02是硬件应用,不需要编写驱动固件,内部集成反电动势检测电路,支持’Y’形和三角形电机,支持过流检…

    2022年4月19日
    220

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号