[英]Count and group by not working as expected
select count(*),manager_id
from departments
group by manager_id;
這是我的想法,但這給了我每個經理的員工數量
我懷疑您從錯誤的表中進行選擇,邏輯似乎正確,但是您從表中的departments
進行選擇的事實有點可疑。
你有員工表嗎? 它是否包含manager_id
列? 如果是這樣的話:
select count(*),manager_id
from employees
group by manager_id;
如果employee表僅具有department_id
列,則:
SELECT d.manager_id,count(*)
FROM employees e
INNER JOIN departments d
ON(e.department_id = d.id)
使用HR模式中的樣本表
select MANAGER_ID, count(*), count(distinct EMPLOYEE_ID)
from HR.EMPLOYEES
group by MANAGER_ID
order by 1 nulls first;
給
MANAGER_ID COUNT(*) COUNT(DISTINCTEMPLOYEE_ID)
---------- ---------- --------------------------
1 1
100 14 14
101 5 5
102 1 1
注意第一行,經理為NULL-即有一個雇員沒有經理。
我還同時使用了count(*)
和count(distinct EMPLOYEE_ID)
。 這與該表無關,其中EMPLOYEE_ID
為PK,但通常情況下,前者返回記錄數,后者返回雇員數 (可以更低)。
我也遇到過你的類似問題。 嘗試在計數內添加要計數的id,即employeeid 。 如果之后仍然無法使用,請嘗試在分組依據中添加相同的ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.