Hola
No se si lo he entendido bien pero quieres que solo te devuelva un registro con 5 campos
lo haria asi o bien con un procedimiento
Código SQL
[-]
select
(select count(rating) from table reviews where idProfessional=2 and rating=1)
as Campo1,
(select count(rating) from table reviews where idProfessional=2 and rating=2)
as Campo2,
(select count(rating) from table reviews where idProfessional=2 and rating=3)
as Campo3,
(select count(rating) from table reviews where idProfessional=2 and rating=4)
as Campo4,
(select count(rating) from table reviews where idProfessional=2 and rating=5)
as Campo5 from rdb$database
pero si lo que quieres es un regitro para cada distinto idprofesional
Código SQL
[-]
select idProfessional,campo1,campo2,campo3,campo4,campo5
from (select idProfessional,
sum((select count(rating) from table reviews where idProfessional=r1.idProfessional and rating=1)) as Campo1,
sum((select count(rating) from table reviews where idProfessional=r1.idProfessional and rating=2)) as Campo2,
sum((select count(rating) from table reviews where idProfessional=r1.idProfessional and rating=3)) as Campo3,
sum((select count(rating) from table reviews where idProfessional=r1.idProfessional and rating=4)) as Campo4,
sum((select count(rating) from table reviews where idProfessional=r1.idProfessional and rating=5)) as Campo5,
from reviews r1
group by idProfessional)
Esto es una select from otra select
el sum no hace nada, solo es para que funcione el group by
Puede haber errores de sintaxis pero lo que cuenta es la idea
Saludos