SQL语句常见问题(查询)

本文主要提及了我在学习过程中遇到比较好的题目,以及自己的做法,仅供参考

学生表Student

Sno

Sname

Ssex

Sage

Sdept

95001

李敏勇

20

CS

95002

刘晨

19

IS

95003

王敏

18

MA

95004

张立

18

IS

课程表Course

Cno

Cname

Cpno

Credit      

Teacher

1

数据库

5

4

王芳

2

数学

NULL

2

刘新

3

信息系统

1

4

刘新

4

操作系统

6

3

高升

5

数据结构

7

4

宋明

6

数据处理

NULL

2

张彬

7

Pascal语言

6

4

李磊

 学生选修表SC

 

Sno

Cno

Grade

95001

1

92

95001

2

85

95001

3

88

95002

2

90

95003

2

55

95004

2

70

查询每个学生的学号、课程号及分数,同时统计每个学生的总分

SELECT 
    a.Sno AS 学号, 
    a.Sname AS 姓名,
    MAX(CASE WHEN b.Cno = 1 THEN Grade ELSE 0 END) AS '数据库Cno=1',
    MAX(CASE WHEN b.Cno = 2 THEN Grade ELSE 0 END) AS '数学Cno=2',
    MAX(CASE WHEN b.Cno = 3 THEN Grade ELSE 0 END) AS '信息系统Cno=3',
    SUM(Grade) AS 总分 
FROM 
    Student a 
LEFT JOIN 
    SC b ON a.Sno = b.Sno 
GROUP BY 
    a.Sno, a.Sname

 查询每个学生的各科分数、最高分、最低分、总分、平均分

SELECT 
    a.Sno AS 学号, 
    a.Sname AS 姓名,
    MAX(CASE WHEN b.Cno = 1 THEN Grade ELSE 0 END) AS 数据库,
    MAX(CASE WHEN b.Cno = 2 THEN Grade ELSE 0 END) AS 数学,
    MAX(CASE WHEN b.Cno = 3 THEN Grade ELSE 0 END) AS 信息系统,
    MAX(Grade) AS 最高分,
    MIN(Grade) AS 最低分,
    SUM(Grade) AS 总分,
    AVG(Grade) AS 平均分 
FROM 
    Student a 
LEFT JOIN 
    SC b ON a.Sno = b.Sno 
GROUP BY 
    a.Sno, a.Sname

 有问题的朋友可以私聊或者在下面评论

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值