查询并显示“成绩”表中各科的平均分
时间: 2023-09-17 09:14:25 浏览: 73
好的,以下是您所需的SQL语句:
```
SELECT AVG(语文) AS '语文平均分', AVG(数学) AS '数学平均分', AVG(英语) AS '英语平均分', AVG(网络) AS '网络平均分'
FROM 成绩
```
这条SQL语句会返回一个包含各科平均分的查询结果。通过使用AVG函数,我们可以求出每个科目的平均分,并使用AS子句给每个平均分取一个别名,从而得到易于阅读的结果。
相关问题
sql 按各科平均成绩进行排序,并显示排名
可以使用以下 SQL 语句来实现:
```
SELECT subject, AVG(score) as avg_score, RANK() OVER (ORDER BY AVG(score) DESC) as ranking
FROM score
GROUP BY subject
ORDER BY avg_score DESC;
```
其中,`score` 表是成绩表,包含字段 `subject` 和 `score`,分别表示科目和成绩。`AVG(score)` 表示对每个科目的成绩求平均值,`RANK() OVER (ORDER BY AVG(score) DESC)` 表示按平均成绩降序排名,`ranking`是排名字段的别名。最后,使用 `ORDER BY avg_score DESC` 对结果按平均成绩降序排序。
查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
```
SELECT
c.cid AS 课程ID,
c.tname AS 课程name,
MAX(score) AS 最高分,
MIN(score) AS 最低分,
AVG(score) AS 平均分,
CONCAT(CAST(SUM(CASE WHEN score >= 60 THEN 1 ELSE 0 END) AS CHAR(10)), '/', CAST(COUNT(*) AS CHAR(10))) AS 及格率,
CONCAT(CAST(SUM(CASE WHEN score >= 70 AND score < 80 THEN 1 ELSE 0 END) AS CHAR(10)), '/', CAST(COUNT(*) AS CHAR(10))) AS 中等率,
CONCAT(CAST(SUM(CASE WHEN score >= 80 AND score < 90 THEN 1 ELSE 0 END) AS CHAR(10)), '/', CAST(COUNT(*) AS CHAR(10))) AS 优良率,
CONCAT(CAST(SUM(CASE WHEN score >= 90 THEN 1 ELSE 0 END) AS CHAR(10)), '/', CAST(COUNT(*) AS CHAR(10))) AS 优秀率
FROM
sc
INNER JOIN course c ON sc.cid = c.cid
GROUP BY
c.cid,
c.tname;
```