相关文章推荐
腹黑的铁板烧  ·  JavaScript ...·  4 月前    · 
仗义的大蒜  ·  Excel 重新计算 | ...·  10 月前    · 
胆小的卤蛋  ·  Python ...·  1 年前    · 
大鼻子的柿子  ·  java - ...·  1 年前    · 

插入数据:

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 
	name,
	sum(num) count 
from st 
group by id,name;
select 
	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 
	name,
	group_concat(cla separator '-') cla,
	sum(num) num
FROM st 
GROUP BY id,name;
	 SELECT card.OPERLINEID,listagg(card.VEHICLENO,',') within group (order by card.OPERLINEID) vehicles
	 FROM dlysjhsj.SD_PUBLIC_L1_LINECARD card
    	 GROUP BY card.OP...
CREATE TABLE `cate` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
 `name` char(20) DEFAULT '' COMMENT '分类名',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='\u6587\u7ae0\u5206\u7c7b\u8868';
article表:
                                    SELECT CONCAT('候选人:', lastname,firstname, ' 学科:',subject,' 学历:', qualification) AS 简历 FROM kalacloud_student ORDER BY qualification DESC;
                                    在项目的开发过程中,我们会遇到一些特殊的业务需求,如接下来讲的业务需求:根据多个字段,如果多个字段相同就把两条数据合并为一条数据,但是两条数据的创建人的追加在一条数据中,返回给前端。
 话不多说上图解释该业务
 当然也可以通过代码去完成,这次我们将通过写sql的方式解决改业务。
 话不多说,上代码,上注释
SELECT
    max(oc.instance_number) ,
    max(oc.description) ,
    max(oc.details_type) ,
                                    1.在oracle中,group by后将字符拼接。任务:在学生表中,有studentid和subject两个字段。要求对studentid进行group by分组,并将所选科目拼接在一起。oracle中sql语句如下。select studentid, listagg(subject, ',') within group(order by subject)from studentgroup by...
其实,拼接几列字符串并不难,用concat函数就可以实现,concat(col1,col2,col3) 就会将第一列,第二列,第三列字符拼接起来,sql代码:
select concat('a','_','b','_','c') as cct;
sql执行结果:
                                    ((select '《' + TV + '》' from TVShow a where a.Name = TVShow.Name AND a.Area = TVShow.Area       for xml path(''))) AS 喜欢的剧
这个需求需要一个类似于树形的查询结果,我们可以把每个value关联的所有resource_id以某种当时拼接起来,只要自己能够找到相应方式拿出来用就行了。经过查询pgsql支持的聚合查询,找到一个函数:
聚合函数:string_agg(resource_id, ',')
在数据库运行以下sql:
select value, stri
                                    分组查询
后面一篇文章我们将介绍MySQL的聚合函数(https://blog.csdn.net/qq_41453285/article/details/88318318),group by通常与聚合函数放在一起使用
	分组查询允许把数据分为多个逻辑组,然后对每个组进行聚合计算
	使用group by之前,先说明一下重要的规则:
	1.group by子句可以包含任意数目的列。这使得能对分组进行...