在公司 C1 中,唯一的牽頭經理是 LM1。LM1 下有兩名高級經理,SM1 和 SM2。在高級經理 SM1 之下有一名經理 M1。經理 M1 下有兩名員工,E1 和 E2。
在公司 C2 中,唯一的牽頭經理是 LM2。LM2下有一名高級經理SM3。高級經理 SM3 下有兩名經理,M2 和 M3。在經理 M2 下有一名員工 E3,在經理 M3 下有另一名員工 E4。
預期結果:
C1 莫妮卡 1 2 1 2
C2 薩曼莎 1 1 2 2
公司表:

Lead_Manager 表:

Senior_Manager 表:

經理表:

員工表:

我的代碼:
select count(company.company_code) from company
join lead_manager on company.company_code = lead_manager.company_code
join senior_manager on company.company_code = senior_manager.company_code
join manager on company.company_code = manager.company_code
join employee on company.company_code = employee.company_code
order by company.company_code;
當前輸出: 117637
問題在我的第一行。我不知道我應該怎樣
我嘗試了什么:
select * from companyselect count(distinct lead_manager.company_code), count(distinct senior_manager.company_code), count(distinct manager.company_code), count(distinct employee.company_code) from company
uj5u.com熱心網友回復:
您可能應該更改資料模型并使用單個分層表:
CREATE TABLE employees (
id NUMBER(8,0) PRIMARY KEY,
company_id VARCHAR2(20),
manager_id REFERENCES employees,
name VARCHAR2(20),
job_title VARCHAR2(20)
);
然后您可以將員工存盤C1為:
INSERT INTO employees (id, company_id, manager_id, name, job_title)
SELECT 1, 'C1', NULL, 'Monica', 'Founder' FROM DUAL UNION ALL
SELECT 2, 'C1', 1, 'Alice', 'Lead Manager' FROM DUAL UNION ALL
SELECT 3, 'C1', 2, 'Betty', 'Senior Manager' FROM DUAL UNION ALL
SELECT 4, 'C1', 2, 'Carol', 'Senior Manager' FROM DUAL UNION ALL
SELECT 5, 'C1', 3, 'Debra', 'Manager' FROM DUAL UNION ALL
SELECT 6, 'C1', 5, 'Emily', 'Employee' FROM DUAL UNION ALL
SELECT 7, 'C1', 5, 'Fiona', 'Employee' FROM DUAL;
并使用分層查詢獲取輸出:
SELECT company_id,
MAX(CASE job_title WHEN 'Founder' THEN name END) AS founder,
COUNT(CASE job_title WHEN 'Lead Manager' THEN id END) AS num_lead_manager,
COUNT(CASE job_title WHEN 'Senior Manager' THEN id END) AS num_senior_manager,
COUNT(CASE job_title WHEN 'Manager' THEN id END) AS num_manager,
COUNT(CASE job_title WHEN 'Employee' THEN id END) AS num_employee
FROM employees e
START WITH manager_id IS NULL
CONNECT BY PRIOR id = manager_id
GROUP BY company_id
哪個輸出:
COMPANY_ID 創始人 NUM_LEAD_MANAGER NUM_SENIOR_MANAGER NUM_MANAGER NUM_EMPLOYEE C1 莫妮卡 1 2 1 2
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/497748.html
標籤:甲骨文
