我是 SQL 新手,并且有一项家庭作业。我做对了所有问题,但仍然无法弄清楚这两个问题,所以如果可以的话请帮忙。我预先感谢您。
我有四张 table :
EMPLOYEE which conatin the attributes (Fname, Minit, Lname, Ssn, Bdate, Address, Sex, Salary, Super_ssn, Dno)
Table DEPARTMENT have the columns ( Dname, Dnumber, Mgr_ssn, Mgr_start_date)
Table PROJECT have the columns ( Pname, Pnumber, Plocation, Dnum)
Table DEPENDENT (Essn, Dependent_name, Sex, Bdate, Relationship)
Q1。对于控制项目数量最多的部门,请列出其名称? 我提出了这个查询,但它仍然只给我每个部门控制了多少个项目,但无法让它工作,因为只给了我最多的一个:(
SELECT Dname, COUNT(distinct Pnumber) as NumberOfProjects
FROM Department, Project
WHERE Dnum = Dnumber
GROUP BY Dname;
第二季度。检索比任何其他员工拥有更多家属的员工的姓名和 Ssn?
我想出了这个,但不知道为什么它不起作用。我不断收到错误
SELECT Fname, Lname, Ssn
FROM Employee
WHERE max((SELECT COUNT(*)
FROM Dependent
WHERE Ssn = Essn));
顺便说一句,我正在使用 MySql WorkBench 5.2,并且该语言仅允许使用 SQL
最佳答案
对于您的第一个查询,如果您已经拥有所有部门的列表及其控制的项目数量,那么您已经完成了工作。在您的查询中添加一些额外的代码来完成这项工作。
如果您按项目数量降序排序,则正确的部门将位于列表中的第一个。如果您 LIMIT 1,您将只选择该部门。
<小时/> 您的第二个查询需要更多工作,它不能像第一个查询那样清晰地提供您正在查找的信息。同样的方法,先把信息按顺序取出来,然后再找最上面的。您的内部查询可能应如下所示:(SELECT Essn, COUNT(Dependent_name) AS Dependents
FROM Dependent
GROUP BY Essn
ORDER BY Dependents DESC);
关于mysql - 如何解决这两个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18544653/