SQL声明报告每个有人向他或她报告的人的直接报告的数量

时间:2016-03-21 09:24:59

标签: sql oracle

我正在努力学习和自学sqldeveloper和sql,但我很难理解如何编写将回答查询的sql语句“报告每个有人报告给他或她的人的直接举报数量。“

我最初有这个:

SELECT EMPLOYEES.EMPLOYEENUMBER, COUNT(EMPLOYEES.REPORTSTO) FROM EMPLOYEES; 

但那并没有给我一个结果。我不确定我在这里缺少什么。我相信唯一涉及的表是“员工”表。

员工表的列为:EMPLOYEENUMBER,LASTNAME,LASTNAME,EXTENTION,EMAIL,OFFICECODE,REPORTSTO,JOBTITLE。

1 个答案:

答案 0 :(得分:0)

假设REPORTSTOFORIEGN KEY引用回EMPLOYEENUMBER;即你的表(可能具有不同的数据类型)具有类似的结构:

CREATE TABLE EMPLOYEES (
  EMPLOYEENUMBER INT PRIMARY KEY,
  FIRSTNAME      VARCHAR2(50),
  LASTNAME       VARCHAR2(50),
  EXTENTION      VARCHAR2(4),
  EMAIL          VARCHAR2(50),
  OFFICECODE     INT,
  REPORTSTO      INT REFERENCES EMPLOYEES(EMPLOYEENUMBER),
  JOBTITLE       VARCHAR2(50)
);

然后,您可以在GROUP BY列上REPORTSTO

SELECT REPORTSTO AS EMPLOYEENUMBER,
       COUNT( 1 ) AS number_reporting_to
FROM   EMPLOYEES
WHERE  REPORTSTO IS NOT NULL
GROUP BY REPORTSTO;