ПРЕДУПРЕЖДЕНИЕ: Я знаю this вопрос - это НЕ, как у меня, потому что я добавил пункт в моем запросе GROUP BY
и она до сих пор не работает.Агрегатная функция после того, как условие возвращения пустое множество
Мне нужно выбрать максимальное значение временного столбца project_count
.
Это запрос:
SELECT employee_id, COUNT(*) AS project_count FROM Employees WHERE project_level = 'L1' AND YEAR(Employees.project_date) = '2017' GROUP BY employee_id HAVING project_count = MAX(project_count);
Если удалить пункт HAVING
, выход, как в следующем:
+-------------+---------------+
| employee_id | project_count |
+-------------+---------------+
| 1 | 2 |
| 2 | 1 |
| 3 | 3 |
| 5 | 1 |
+-------------+---------------+
Однако, если включить предложение HAVING
(что мне нужно использовать, чтобы узнать максимальное значение project_count
), выход представляет собой пустой набор; но это должно быть так:
+-------------+---------------+
| employee_id | project_count |
+-------------+---------------+
| 3 | 3 |
+-------------+---------------+
См. Http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry
У вас есть два «слоя» группировки, но они только указывают; помните, что 'MAX (project_count)' такой же, как 'MAX (COUNT (*))', сгруппированный employee_id. Я удивлен, что MySQL не отклонил запрос; и что он решил не возвращать строки, а не все из них, когда он ее принял. – Uueerdo