请问对同一个表进行多次查询、统计的语句怎么写?

那片夕阳 2023-01-08 21:31:32

请问对同一个表进行多次查询、统计的语句怎么写?

SQL  Server 数据库
表:ChengJi
id     name    kecheng   chengji   xueqi
1       张三       高数          75        001
2       张三       语文          80        001
3       张三       英语          80        002
4       李四       化学          77        001
5       李四       历史          88        001
6       小明       英语          90        002


通过SQL 查询想得到如下结果:
name      kechengshu      jutikecheng      xueqi
 张三            2                   高数、语文       001
 张三            1                   英语                  002 
 李四            2                   化学、历史       001
 小明            1                   英语                  002

说明:就是根据学生的 ChengJi 表中的信息,对每一个学生进行数据统计,要得到每个学生 每学期都考了那些课程,共有几门课程等信息。

...全文
54 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangCK 01-10
  • 打赏
  • 举报
回复 2



--测试数据
if not object_id(N'ChengJi') is null
    drop table ChengJi
Go
Create table ChengJi([id] int,[name] nvarchar(22),[kecheng] nvarchar(22),[chengji] int,[xueqi] nvarchar(23))
Insert ChengJi
select 1,N'张三',N'高数',75,N'001' union all
select 2,N'张三',N'语文',80,N'001' union all
select 3,N'张三',N'英语',80,N'002' union all
select 4,N'李四',N'化学',77,N'001' union all
select 5,N'李四',N'历史',88,N'001' union all
select 6,N'小明',N'英语',90,N'002'
Go
--测试数据结束


select name,count(*) as kechengshu,
    stuff((select ','+kecheng from ChengJi
            where a.name=name and a.xueqi=xueqi
             order by ','+kecheng
             for xml path('')),1,1,'') as  jutikecheng,xueqi
    
from ChengJi as a
group by name,xueqi
order by name,xueqi

img

二月十六 版主 01-09
  • 打赏
  • 举报
回复 1

img

二月十六 版主 01-09
  • 打赏
  • 举报
回复 1

--测试数据
if not object_id(N'ChengJi') is null
    drop table ChengJi
Go
Create table ChengJi([id] int,[name] nvarchar(22),[kecheng] nvarchar(22),[chengji] int,[xueqi] nvarchar(23))
Insert ChengJi
select 1,N'张三',N'高数',75,N'001' union all
select 2,N'张三',N'语文',80,N'001' union all
select 3,N'张三',N'英语',80,N'002' union all
select 4,N'李四',N'化学',77,N'001' union all
select 5,N'李四',N'历史',88,N'001' union all
select 6,N'小明',N'英语',90,N'002'
Go
--测试数据结束
SELECT name,
       COUNT(1) AS kechengshu,
       STRING_AGG(kecheng,',') AS jutikecheng,
       xueqi
FROM ChengJi
GROUP BY xueqi,
         name;

相关推荐
发帖
MS-SQL Server

3.4w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2023-01-08 21:31
社区公告
暂无公告