Para el punto uno te basta con hacer un GROUP BY de empresa.razon_soc
Código SQL:
Ver originalSELECT empresa.razon_soc AS Empresa
FROM empresa
INNER JOIN emp_serv ON
emp_serv.id_empresa=empresa.id
INNER JOIN emp_act ON
emp_act.id_empresa=empresa.id
INNER JOIN servicio ON
emp_serv.id_servicio=servicio.id
INNER JOIN actividad ON
emp_act.id_actividad=actividad.id
WHERE servicio.nombre IN ('Comunicación', 'Hosting')
GROUP BY empresa.razon_soc
Para el punto dos, partiendo de la del punto uno, puedes hacer una columna que sea COUNT(*) (a parte de la de la razón social) que te indicará el número de veces que aparece esa razón social. Si luego añades un HAVING por el número de apariciones que quieres (una por cada servicio), ya lo tendrás.
Código SQL:
Ver originalSELECT empresa.razon_soc AS Empresa, COUNT(*) AS b
FROM empresa
INNER JOIN emp_serv ON
emp_serv.id_empresa=empresa.id
INNER JOIN emp_act ON
emp_act.id_empresa=empresa.id
INNER JOIN servicio ON
emp_serv.id_servicio=servicio.id
INNER JOIN actividad ON
emp_act.id_actividad=actividad.id
WHERE servicio.nombre IN ('Comunicación', 'Hosting')
GROUP BY empresa.razon_soc
HAVING b > 1