簡體   English   中英

將 Count 與 Count Distinct 和 Group By 結合使用

[英]Using Count with Count Distinct and Group By

我有兩個表,一個用於employees ,其中包含idnamecompany列,另一個用於調查results表,其中有employee_idquestions_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      |
|--------------------------------|

SQL小提琴

有什么建議嗎?

您可以通過從employeesresultsLEFT 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

SQLFiddle 上的演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM