使用计数不同和分组依据的计数

时间:2020-01-14 07:35:42

标签: mysql count subquery

我有两个表,一个表用于employees,其中有idnamecompany列,另一个表是用于调查的results,具有{{1 }},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

SQL Fiddle

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您可以通过LEFT JOINemployeesresults获得所需的结果;那么您可以在没有子查询的情况下计算两个值:

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

Demo on SQLFiddle

相关问题