zzzqy 发表于 2023-6-27 15:46:39

数据库查询

查询 1984 年~1986 年出生的学生的姓名,总平均成绩及已修学分数。

Select sname 姓名,avg(sc.grade) 总平均成绩,sum(courses.credit) 已修学分数
from students,sc,courses
where students.bdate between 1984-01-01 and 1986-12-31 and students.sno = sc.sno and courses.cno = sc.cno group by students.sname;

这样子查询为什么查出的结果是空的啊

歌者文明清理员 发表于 2023-6-27 15:48:35

本帖最后由 歌者文明清理员 于 2023-6-27 15:55 编辑

你好,根据你提供的查询语句,可能是由于日期格式的问题导致查询结果为空。在SQL中,日期需要使用引号括起来表示为字符串,所以请尝试将日期范围的条件改为以下形式:

sql
WHERE students.bdate BETWEEN '1984-01-01' AND '1986-12-31'
重新运行查询语句后,应该可以正确地获取到 1984 年至 1986 年出生的学生的姓名、总平均成绩和已修学分数的结果。如果问题仍然存在,请提供更多相关的信息,我将尽力帮助你解决。

sfqxx 发表于 2023-6-27 16:52:13

修改查询语句中的日期比较部分,将日期值用引号括起来,如下所示:

SELECT students.sname AS 姓名, AVG(sc.grade) AS 总平均成绩, SUM(courses.credit) AS 已修学分数
FROM students, sc, courses
WHERE students.bdate BETWEEN '1984-01-01' AND '1986-12-31'
AND students.sno = sc.sno
AND courses.cno = sc.cno
GROUP BY students.sname;
这样修改后再执行查询,应该能够正确返回结果。

zzzqy 发表于 2023-6-27 17:06:13

歌者文明清理员 发表于 2023-6-27 15:48
你好,根据你提供的查询语句,可能是由于日期格式的问题导致查询结果为空。在SQL中,日期需要使用引号括起 ...

好的 谢谢

zzzqy 发表于 2023-6-27 17:06:53

sfqxx 发表于 2023-6-27 16:52
修改查询语句中的日期比较部分,将日期值用引号括起来,如下所示:




感谢您的回答!

歌者文明清理员 发表于 2023-6-27 17:08:35

zzzqy 发表于 2023-6-27 17:06
好的 谢谢

https://i.imgtg.com/2023/06/18/OTpTnF.png
页: [1]
查看完整版本: 数据库查询