У меня проблема с агрегатной функцией в mysql.
В качестве примера у меня есть этот макет таблицы. Он заполняется данными каждые х минут.
Company | Employee | Room | Temperature
---------------------------------------
A | Mike | 301 | 20
A | Mike | 301 | 30
A | Mike | 301 | 30
A | Mike | 402 | 40
A | Lisa | 402 | 10
Теперь в своем запросе я группирую Company + Employee в один результат, и я ищу подсчет максимального числа вхождений значения Room, в то же время агрегируя другие значения, такие как температура.
SELECT
Company,
Employee,
??? as Room,
AVG(Temperature) as Temperature
FROM
example_table
GROUP BY
Company,
Employee
В этом примере комната 301 появляется 3 раза для Майка, который должен вывести 3 в статистической функции. Поскольку данные находятся на заданном интервале, это, по сути, максимальная продолжительность пребывания в комнате для этого сотрудника. Я ищу такой результат
Company | Employee | Room | Temperature
---------------------------------------
A | Mike | 3 | 30
A | Lisa | 1 | 10
Я чувствую, что что-то упустил, но до сих пор я не нашел ничего, что сработало в запросе для меня. Я могу group_concant комнаты и решить это с 2 строками кода в php, но фактические данные - это гигабайты, которые я не хочу отправлять в сценарий. Производительность запроса к базе данных не имеет значения. MySQL 8 доступен.
edit: я изменил пример, чтобы убедиться, что COUNT(DISTINCT Room)
случайно не дает правильного результата, потому что это не то, что я ищу.