Sql语句中count和sum运用

首先区分一下这两个函数使用方法:

count():主要用来统计表的行数。

sum():用来求表中某一个字段数据的和,用大白话说就是求某一列的和。

直接上表:

student:

+------+--------+------+------+

| sno  | sname  | sage | ssex |
+------+--------+------+------+
| s001 | 张三   |   23 | 男   |
| s002 | 李四   |   23 | 男   |
| s003 | 吴鹏   |   25 | 男   |
| s004 | 琴沁   |   20 | 女   |
| s005 | 王丽   |   20 | 女   |
| s006 | 李波   |   21 | 男   |
| s007 | 刘玉   |   21 | 男   |
| s008 | 萧蓉   |   21 | 女   |
| s009 | 陈萧晓 |   23 | 女   |
| s010 | 陈美   |   22 | 女   |

+------+--------+------+------+

sc(学号、课程号、分数):

+------+------+-------+

| sno  | cno  | score |
+------+------+-------+
| s001 | c001 |  78.9 |
| s001 | c002 |  82.9 |
| s001 | c003 |    59 |
| s002 | c001 |  80.9 |
| s002 | c002 |  72.9 |
| s003 | c001 |  81.9 |
| s003 | c002 |  81.9 |
| s004 | c001 |  60.9 |
+------+------+-------+

需求:查询所有同学的学号、姓名、选课数、总成绩;

错误sql:

select a.sno,a.sname,count(b.cno),sum(b.score) from student a,sc b where a.sno=b.sno;

这是非常大意的写法,没有经过仔细分析,选课数、总成绩应该是成绩表sc来提供,正确写法:

select a.sno,a.sname,b.cnos,b.core from student a,(select sno,count(cno) cnos,sum(score) core from sc group by sno) b where a.sno=b.sno;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值