У меня есть две таблицы, одна для 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 |
|--------------------------------|
SQL Fiddle
Любые рекомендации?