按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子句可以包含任意数目的列。这使得能对分组进行...