我有三個表,稱為分支,員工和經理,結構如下
Table: branch
CREATE TABLE branch (
id INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL
UNIQUE,
name FLOAT,
city VARCHAR,
region VARCHAR,
postal_code VARCHAR,
street VARCHAR,
street_number VARCHAR
);
Table: employee
CREATE TABLE employee (
id INTEGER PRIMARY KEY AUTOINCREMENT,
surname VARCHAR,
name VARCHAR,
branch_id INTEGER REFERENCES BRANCH (ID),
city VARCHAR,
region VARCHAR,
street VARCHAR,
street_number VARCHAR,
phone VARCHAR,
mobile VARCHAR,
vat VARCHAR,
amka VARCHAR,
at VARCHAR
);
Table: manager
CREATE TABLE manager (
id INTEGER PRIMARY KEY AUTOINCREMENT,
employee_id INTEGER REFERENCES employee (id)
UNIQUE
NOT NULL
);
我想像這樣查看每個經理的 id 和他監督下的員工數量
Manager Number of employees
1 5
2 13
到目前為止,我已經做了這個,顯示了每個經理在哪個分支作業,但我不知道如何進行計數。
SELECT manager.id AS [Manager id],
employee.name AS [Manager name],
branch.name AS [Branch name],
branch.id AS [Branch id]
FROM (
(
manager
INNER JOIN
employee ON manager.employee_id = employee.id
)
INNER JOIN
branch ON employee.branch_id = branch.id
);
我想到的解決方案是首先找到每個經理在哪個分支機構作業,然后將該分支機構的所有員工數減一(經理)。問題是我不知道如何在 sql 中準確地表達它。
uj5u.com熱心網友回復:
由于每個分支機構只能有一個經理,因此您可以統計一個分支機構的員工人數,然后將經理加入他們的分支機構。從那里您可以計算每個分支機構的員工人數。
SELECT manager.id AS manager_id,
manager_employee.name AS manager_name,
COUNT(employee.id) - 1 AS employee_count
FROM manager
INNER JOIN employee AS manager_employee
ON manager.employee_id = manager_employee.id
INNER JOIN branch
ON manager_employee.branch_id = branch.id
INNER JOIN employee
ON branch.id = employee.branch_id
GROUP BY manager.id,
manager_employee.name
uj5u.com熱心網友回復:
按 manager.id 從經理組中選擇 manager.id 作為經理,count(employee_id) 作為“員工人數”
COUNT 將導致員工計數 wrt manager GROUP BY,因為該經理下的員工的 manager_id 和 employee_id 保存在同一個表中。
如果 manager 表只保存 manager 的資料,那么employee 表也應該有 manager_id,就像它有 branch_id 一樣,這樣我們就知道哪個員工在哪個經理下作業。在這種情況下創建員工和經理關系
選擇 manager.id 作為經理,count(employee.employee_id) 作為經理的“員工人數”加入emplyee.manager_id=manager.id 上的員工按manager.id 分組
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/413574.html
標籤:
上一篇:如何將1h47m轉換為時間?
