数据库的一些练习

数据库练习

现在有两个表:

学生信息表: stu_info

+--------+----------+---------+
| STU_NO | STU_NAME | STU_AGE |
+--------+----------+---------+
|      1 | 张三     |      18 |
|      2 | 李四     |      20 |
|      3 | 王五     |      19 |
+--------+----------+---------+

学生成绩表: stu_grade

+--------+---------+-------+
| STU_NO | SUBJECT | GRADE |
+--------+---------+-------+
|      1 | 语文    |   100 |
|      1 | 数学    |    93 |
|      1 | 英语    |    80 |
|      2 | 语文    |    80 |
|      2 | 数学    |    90 |
|      2 | 英语    |   100 |
|      3 | 语文    |    90 |
|      3 | 数学    |    85 |
|      3 | 英语    |    80 |
+--------+---------+-------+

要求得到 一个表, 这个表包含了 姓名, 总分 , 平均分

sql 语句如下:

第一种写法

SELECT stu_name 姓名 ,总分 , 平均分 FROM stu_info as i ,(SELECT stu_no 编号, SUM(grade) 总分 ,AVG(grade) 平均分 FROM stu_grade
GROUP BY stu_no) as s 
WHERE i.stu_no = s.编号;

采用 子查询 的方式 : select 列名1, 列名2, from 表1, 表2 where 条件

第二种写法:

select stu_name 姓名, 总分, 平均分 from stu_info as i INNER join (select stu_no 编号, SUM(grade) 总分, AVG(grade) 平均分 from stu_grade group by stu_no) as s on i.stu_no = s.编号;

采用了 两张表的内联

得到的表 如下:

+--------+--------+-----------+
| 姓名   | 总分   | 平均分    |
+--------+--------+-----------+
| 张三   |    273 |   91.0000 |
| 李四   |    270 |   90.0000 |
| 王五   |    255 |   85.0000 |
+--------+--------+-----------+
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容