У меня есть таблица с 3 столбцами:
userid mac_address count
Записи для одного пользователя могут выглядеть следующим образом:
57193 001122334455 42
57193 000C6ED211E6 15
57193 FFFFFFFFFFFF 2
Я хочу создать представление, отображающее только эти MAC-адресакоторые считаются "обычно используемыми" для этого пользователя.Например, я хочу отфильтровать MAC-адреса, которые используются <10% по сравнению с наиболее используемым MAC-адресом для этого пользователя.Кроме того, я хочу 1 строку на пользователя.Этого легко достичь с помощью GROUP BY, HAVING & GROUP_CONCAT: </p>
SELECT userid, GROUP_CONCAT(mac_address SEPARATOR ',') AS macs, count
FROM mactable
GROUP BY userid
HAVING count*10 >= MAX(count)
И действительно, результат будет следующим:
57193 001122334455,000C6ED211E6 42
Однако я действительно не хочу подсчитыватьКолонка на мой взгляд.Но если я вычеркну его из оператора SELECT, я получу следующую ошибку:
#1054 - Unknown column 'count' in 'having clause'
Можно ли каким-либо образом выполнить эту операцию, если у меня не будет неприятного счетного столбца в моем представлении?Я знаю, что, вероятно, могу сделать это с помощью внутренних запросов, но я бы не хотел этого делать из соображений производительности.
Ваша помощь очень ценится!