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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • 职称计算机ppt2003窍门,ppt2003模块职称计算机考试

    职称计算机ppt2003窍门,ppt2003模块职称计算机考试职称计算机考试模块Powerpoint2003基础1、要求:利用“开始”菜单启动PowerPoint2003[略]2、要求:利用桌面快捷方式启动PowerPoint2003,再退出PowerPoint2003[略]3、要求:用开始菜单打开最近使用过的“雷雨课件”文件:点击“开始”→“我最近的文档”→“|雷雨课件”。4、要求:从最近打开过的演示文稿“学习指南”启动PowerPoint2003,然后…

    2022年5月30日
  • pytorch下载CIFAR10数据集[通俗易懂]

    pytorch下载CIFAR10数据集[通俗易懂]importtorchfromtorchvisionimportdatasetsfromtorchvisionimporttransformsfromtorch.utils.dataimportDataLoaderdefmain():batchsz=32cifar_train=datasets.CIFAR10(‘cifar’,True,transform=transforms.Compose([transforms.Re

    2022年6月22日
  • java 仓库管理系统源码[通俗易懂]

    java 仓库管理系统源码[通俗易懂]系统操作权限管理。系统提供基本的登入登出功能,同时系统包含两个角色:系统超级管理员和普通管理员,超级管理员具有最高的操作权限,而普通管理员仅具有最基本的操作权限,而且仅能操作自己被指派的仓库。 请求URL鉴权。对于系统使用者登陆后进行操作发送请求的URL,后台会根据当前用户的角色判断是否拥有请求该URL的权限。 基础数据信息管理。对包括:货物信息、供应商信息、客户信息、仓库信息在内的基础数据信…

    2022年9月23日
  • latex中的希腊字母表在哪里_表示角度的希腊字母

    latex中的希腊字母表在哪里_表示角度的希腊字母在写论文的过程中,编辑公式部分会有一些希腊字母需要用LaTeX形式,将其汇总如下,方便查阅。希腊字母小写、大写LaTeX形式希腊字母大小LaTeX形式αA\alphaAαA\alphaAμN\muNμN\muNβB\betaBβB\betaBξΞ\xi\XiξΞ\xi\XiγΓ\gamma\GammaγΓ\gamma\GammaoOoOoOoOδΔ\delta\DeltaδΔ\delta\DeltaπΠ\pi\P

    2022年10月11日
  • 用EnableMenuItem不能使菜单变灰的原因

    用EnableMenuItem不能使菜单变灰的原因

    2021年12月16日
  • 狂神说Linux_狂神说java

    狂神说Linux_狂神说javaLinux在服务器端,很多大型项目都是部署在Linux服务器上利用VM + Centos7搭建本地Linux系统你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。概念云服务器就是一个远程电脑Linux中一切皆文件根目录/,所有的文件都挂载在这个节点下/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。/boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev : dev是Device(设备

    2022年8月8日

发表回复

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

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