數(shù)據(jù)庫(kù)練習(xí)
現(xiàn)在有兩個(gè)表:
學(xué)生信息表: stu_info
+--------+----------+---------+
| STU_NO | STU_NAME | STU_AGE |
+--------+----------+---------+
| 1 | 張三 | 18 |
| 2 | 李四 | 20 |
| 3 | 王五 | 19 |
+--------+----------+---------+
學(xué)生成績(jī)表: stu_grade
+--------+---------+-------+
| STU_NO | SUBJECT | GRADE |
+--------+---------+-------+
| 1 | 語(yǔ)文 | 100 |
| 1 | 數(shù)學(xué) | 93 |
| 1 | 英語(yǔ) | 80 |
| 2 | 語(yǔ)文 | 80 |
| 2 | 數(shù)學(xué) | 90 |
| 2 | 英語(yǔ) | 100 |
| 3 | 語(yǔ)文 | 90 |
| 3 | 數(shù)學(xué) | 85 |
| 3 | 英語(yǔ) | 80 |
+--------+---------+-------+
要求得到 一個(gè)表, 這個(gè)表包含了 姓名, 總分 , 平均分
sql 語(yǔ)句如下:
第一種寫(xiě)法
SELECT stu_name 姓名 ,總分 , 平均分 FROM stu_info as i ,(SELECT stu_no 編號(hào), SUM(grade) 總分 ,AVG(grade) 平均分 FROM stu_grade
GROUP BY stu_no) as s
WHERE i.stu_no = s.編號(hào);
采用 子查詢(xún) 的方式 : select 列名1, 列名2, from 表1, 表2 where 條件
第二種寫(xiě)法:
select stu_name 姓名, 總分, 平均分 from stu_info as i INNER join (select stu_no 編號(hào), SUM(grade) 總分, AVG(grade) 平均分 from stu_grade group by stu_no) as s on i.stu_no = s.編號(hào);
采用了 兩張表的內(nèi)聯(lián)
得到的表 如下:
+--------+--------+-----------+
| 姓名 | 總分 | 平均分 |
+--------+--------+-----------+
| 張三 | 273 | 91.0000 |
| 李四 | 270 | 90.0000 |
| 王五 | 255 | 85.0000 |
+--------+--------+-----------+