Tengo una tabla con 3 columnas:SQL Tener en columnas no en SELECT
userid mac_address count
Las entradas para un usuario podría tener este aspecto:
57193 001122334455 42
57193 000C6ED211E6 15
57193 FFFFFFFFFFFF 2
Quiero crear una vista que muestra solo aquellos MAC que se consideran "de uso común" para este usuario. Por ejemplo, quiero filtrar los MAC que se usan < 10% en comparación con la dirección MAC más utilizada para ese usuario. Además, quiero 1 fila por usuario. Esto podría lograrse fácilmente con un GROUP BY, HAVING & GROUP_CONCAT:
SELECT userid, GROUP_CONCAT(mac_address SEPARATOR ',') AS macs, count
FROM mactable
GROUP BY userid
HAVING count*10 >= MAX(count)
Y, en efecto, el resultado es el siguiente:
57193 001122334455,000C6ED211E6 42
Sin embargo, yo realmente no quiero el recuento de columnas en mi ver. Pero si me lo saco de la instrucción SELECT, me sale el siguiente error:
#1054 - Unknown column 'count' in 'having clause'
¿Hay alguna manera de poder realizar esta operación sin estar obligado a tener un recuento de la columna desagradable en mi opinión? Sé que probablemente pueda hacerlo mediante consultas internas, pero me gustaría evitar hacerlo por motivos de rendimiento.
¡Su ayuda es muy apreciada!
No sabía que las subselecciones pudieran usarse así. Muchas gracias, ¡solo la respuesta que estaba buscando! – Rapsey
Sin embargo, me encontré con lo siguiente: # 1349 - View's SELECT contiene una subconsulta en la cláusula FROM ¿Alguna idea? – Rapsey
@Rapsey: No, porque nunca nos dijiste qué DBMS estás usando. –