[英]Using Count with Count Distinct and Group By
我有兩個表,一個用於employees
,其中包含id
, name
和company
列,另一個用於調查results
表,其中有employee_id
, questions_id
,作為一名員工answer
多個結果。
|---------------------|
| id | name | company |
|---------------------|
|-----------------------------------------|
| id | employee_id | question_id | answer |
|-----------------------------------------|
我想Select
每家公司的員工總數,以及調查中每家公司的參與者總數。
我嘗試了以下查詢,但執行時間太長:
SELECT employees.company as x, COUNT(DISTINCT (results.employee_id)) "Total Surveys", (SELECT COUNT(employees.id) FROM employees WHERE company = x) "Headcount"
FROM results
JOIN employees ON results.employee_id = employees.id
GROUP BY employees.company
結果
|--------------------------------|
| x | Total Surveys | Headcount |
|--------------------------------|
| C1 | 15 | 3 |
| C2 | 10 | 5 |
|--------------------------------|
有什么建議嗎?
您可以通過從employees
到results
的LEFT JOIN
獲得您想要的results
; 那么你可以在沒有子查詢的情況下計算這兩個值:
SELECT e.company,
COUNT(DISTINCT r.employee_id) AS `Total Surveys`,
COUNT(DISTINCT e.id) AS `HeadCount`
FROM employees e
LEFT JOIN results r ON r.employee_id = e.id
GROUP BY e.company
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.