Hola Divit:
En lo particular, creo que tienes un mal modelo de tablas, porque desde mi punto de vista a redundancia de datos, pero bueno, en realidad esa no fue la pregunta, pero si creo que deberías darle un vistazo a la teoría sobre modelo Entidad-Relación para que veas a qué me refiero...
Volviendo al tema que nos atañe, en realidad no se me ocurrió una respuesta muy trivial, pero podrías hacerlo más o menos así:
Código:
SELECT
T1.empresa,
CASE columna
WHEN 'tag1' THEN tag1
WHEN 'tag2' THEN tag2
WHEN 'tag3' THEN tag3
WHEN 'tag4' THEN tag4
END tag
FROM tags T1
INNER JOIN
( SELECT empresa, tag1 tag, 'tag1' columna
FROM contador
UNION ALL
SELECT empresa, tag2 tag, 'tag2' columna
FROM contador
UNION ALL
SELECT empresa, tag3 tag, 'tag3' columna
FROM contador
UNION ALL
SELECT empresa, tag4 tag, 'tag4' columna
FROM contador
ORDER BY tag DESC LIMIT 1
) T2 ON T1.empresa = T2.empresa
En este punto cabe una pregunta, ¿qué pasaría cuando el tag con el número máximo no fuera único? Con los datos que pones no se da el caso, pero ¿qué pasaría si existiera otro 6 para otra empresa, o para la misma empresa pero en distintos tags? ¿qué es lo que se debería presentar como salida? porque la consulta que propongo presentaría sólo un elemento. Si necesitaras todos los elementos entonces la estrategia sería distinta. Dale un vistazo para ver si te sirve.
Saludos
Leo.