我正在努力学习和自学sqldeveloper和sql,但我很难理解如何编写将回答查询的sql语句“报告每个有人报告给他或她的人的直接举报数量。“
我最初有这个:
SELECT EMPLOYEES.EMPLOYEENUMBER, COUNT(EMPLOYEES.REPORTSTO) FROM EMPLOYEES;
但那并没有给我一个结果。我不确定我在这里缺少什么。我相信唯一涉及的表是“员工”表。
员工表的列为:EMPLOYEENUMBER,LASTNAME,LASTNAME,EXTENTION,EMAIL,OFFICECODE,REPORTSTO,JOBTITLE。
答案 0 :(得分:0)
假设REPORTSTO
是FORIEGN 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;