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


相关推荐

  • Wireshark安装后打开显示没有找到接口

    我遇到这个问题是出现在Win10系统中,出现这个问题的原因是Wireshark中由于自带的Winpcap不支持Win10。出现如图所示:1.这个问题的解决方法是下载一个Win10支持的Winpcap,下载链接为点击打开链接,界面如图:点击红色区域下载即可。注意:下载下来的红色区域即可。注意:下载下来Win10Pcap后,在安装前先将Wireshark关掉,要不然安装过程中会报错。2.安装完成后,重…

    2022年4月7日
    348
  • Google Borg论文[通俗易懂]

    Google Borg论文[通俗易懂]Borg的论文逐字翻译,拒绝机器翻译,有一些自己的理解,不一定对,作为参考就行

    2022年10月22日
    0
  • 【数字图像处理】C++读取、旋转和保存bmp图像文件编程实现

    【数字图像处理】C++读取、旋转和保存bmp图像文件编程实现通过我这些天用C++读写bmp图像的经历,摸索再摸索,终于对bmp文件的结构、操作有了一定的了解,下面就大概介绍bmp图片纯C++的读取、旋转和保存的实现过程。要用C++读取bmp图片文件,首先要弄清楚bmp格式图片文件的结构。可以参考这篇文章:http://blog.csdn.net/xiajun07061225/article/details/5813726有几点需要注意的是:在读

    2022年6月15日
    49
  • don\’t have permission access on this server听语音

    don\’t have permission access on this server听语音

    2021年9月23日
    46
  • 怎样打开.jar格式文件,怎样运行.jar格式文件

    怎样打开.jar格式文件,怎样运行.jar格式文件

    2021年10月23日
    42
  • 解析Java中文乱码的处理方法

    解析Java中文乱码的处理方法【引自程序犹如人生的博客】为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!如果中国的程序员不会遇到乱码,那么只有使用汉语编程。汉语编程是怎么回事,我也不大清楚,应该是前年吧!我一朋友给我介绍汉语编程,怎么不错不错?当时因为学习忙没去关注这个,等我闲了,那个朋友不弄这个,问他,他也不说不大清楚,最后自己对这个学习也不了了之

    2022年7月7日
    45

发表回复

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

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