Error 1242: Número incorrecto de registros de la subconsulta:
Este error ocurre en el caso que la subconsulta devuelva más de un registro.
http://dev.mysql.com/doc/refman/5.0/es/ ... rrors.html
Por ello necesitamos usar el operador para subconsultas ANY o SOME o ALL, tu consulta devuelve varios registros, por que cumplen esas condiciones, en este caso con el ANY obtendríamos de resultado el concesionario con CIFC 4 y 5:
SELECT cifc
FROM concesionario
WHERE ciudad <>"madrid" AND cifc IN (SELECT cifc FROM distribucion GROUP BY cifc HAVING AVG(cantidad) > ANY (SELECT AVG(cantidad) FROM distribucion GROUP BY cifc));
En cambio si queremos comparar con la media mayor y sacar solo un registro usamos el operador ALL y obtenemos el 5:
SELECT cifc
FROM concesionario
WHERE ciudad <>"madrid" AND cifc IN (SELECT cifc FROM distribucion GROUP BY cifc HAVING AVG(cantidad) >= ALL (SELECT AVG(cantidad) FROM distribucion GROUP BY cifc));
Que me corrija alguien si me equivoco. Por último una pequeña ayuda sobre estos operadores de comparación:
http://msdn.microsoft.com/es-es/library ... 90%29.aspx
Salu2.