建表语句:
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);
原表数据:
查询出学习次数的总和
查询结果如图:
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;
查询出学生学习次数的总和以及学习课程
查询结果如图:
需要用到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;