sql如何为新手编写复杂的查询?

标签 sql database

<分区>

这是我的表格

 Student (sname, sid, gpa, level, deptno) 
 Course (cno, cname, deptno, units) 
 Dept (dname, deptno) 
 Takes (sid, cno) 

编写一个 SQL 查询,返回已参加的学生的姓名(即 snames) 他们部门外的类(class)比他们部门内的多。你可以 假设数据库中的所有学生都至少在他们的系内选修了一门类(class)。

我不是在为这个问题寻找任何解决方案,但仍然欢迎任何答案。 但我更希望人们能告诉我如何生成编写这样一个复杂查询的步骤。

我的答案是

 Select S.sname
 From Student S, Course C, Dept D, Takes T
 Where T.cno=C.cno and D.deptno=C.deptno and S.sid = T.sid
 Having COUNT(S.deptno=C.deptno) > COUNT( S.deptno != C.deptno)

我不确定我能否以这种方式使用 HAVING 后的计数。 谢谢

最佳答案

尽管我从未参加过 DB/SQL 类(class),但我经常处理中等复杂的 SQL 查询,并且发现生成查询的最佳方法是一次处理一个问题。例如,首先获取学生列表。然后,他们在部门内外上过的课的数量最后,比较查询中的两个值并返回您需要的最终结果集。,

tl;dr:小步骤

关于sql如何为新手编写复杂的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13166566/

相关文章:

mysql - 尝试创建外键时 MySQL 出现错误 1822

sql - MS Access 索引 View

mysql - Sql 查询分组和限制

sql - 如果不同的列为 true,则替换列的值

连接表的 SQL 约束

java - 使用 JDBC 在 KDB 数据库中执行查询

mysql - 并发导致插入重复记录

php - 在 PDO(使用 MySQL)中执行 INSERT 后获取最后插入的行?

ruby-on-rails - 使用 Heroku Web 界面,如何将 PG 数据库从 Heroku 导出为 CSV 文件?

sql - 包含特殊字符的 XML 路径表达式