为公司主管创建sql查询

时间:2019-05-29 10:18:05

标签: sql

我有四个桌子

create table emp (emp_ss int, emp_name nvarchar(20));

create table comp(comp_name nvarchar(20), comp_address nvarchar(20));

create table works (emp_ss int, comp_name nvarchar(20));

create table supervises (spv_ss int, emp_ss int );

这里SUPRVISER_SS和EMP_SS是SS的子集。现在我必须找到:

  1. 拥有四名以上主管的所有公司的名称

我已经查询了上述问题,但不确定是否正确

SELECT COMP_NAME , COUNT(EMP_SS) FROM WORKS
WHERE EMP_SS IN (SELECT DISTINCT SPV_SS FROM supervises) 
GROUP BY COMP_NAME 
HAVING COUNT(EMP_SS) > 4;
  1. 员工人数最多的主管的姓名 但无法获得上述条件的要求结果

    SELECT SPV_SS, COUNT(*) max_ FROM supervises GROUP BY SPV_SS

1 个答案:

答案 0 :(得分:0)

  1. 您不需要为主管创建单独的表,除非主管附带了不属于employee表的额外信息,只需在Employee表中添加一个额外的字段(外键)即可链接到同一张桌子。
  2. 第一个问题:选择公司时只使用group by companyid子句,然后检查主管人数是否大于4。
  3. 第二个问题:选择count(empid)和超级用户,使用group by超级用户子句并在count列上添加order by子句
  4. 我解释了逻辑,至于实际的sql代码,您必须自己弄清楚。