优化这段代码SELECT CId,ROUND(AVG(SCScore3),2)AS AVG FROM sc WHERE DATE_FORMAT(SCTerm,%Y)='2008' GROUP BY CId ORDER BY AVG DESC ;
时间: 2024-04-12 19:27:48 浏览: 181
您提供的代码已经非常接近了,只需要稍作修改即可优化查询语句。以下是优化后的代码:
```sql
SELECT CId, ROUND(AVG(SCScore3), 2) AS AVG
FROM sc
WHERE YEAR(SCTerm) = 2008
GROUP BY CId
ORDER BY AVG DESC;
```
在优化后的代码中,我们使用了`YEAR(SCTerm)`函数来提取`SCTerm`字段中的年份,并与2008进行比较。这样可以更简洁地筛选出2008年的数据。其余部分与您的代码保持一致,包括使用`ROUND`函数进行四舍五入并保留两位小数,以及按降序排列结果。
请将上述代码中的`sc`替换为您实际的表名,`CId`替换为实际表中课程号的字段名,`SCScore3`替换为实际表中期末成绩的字段名。执行该查询语句后,将按照降序排列显示每门课程的课程号和平均分。
阅读全文