Duvida simples com group by

Alguém sabe pq isso não funciona?

SELECT f.nome_usuario, e.nome_empresa, COUNT(f.id_usuario_pk)
FROM funcionario f
RIGHT JOIN empresa e
ON f.id_empresa_fk = e.id_empresa_pk
GROUP BY e.nome_empresa

Diz que não é uma cláusula group by válida…

pq vc tem q colocar no group by todos os campos que nao estao usando o count, no caso f.nome_usuario e e.nome_empresa,

SELECT f.nome_usuario, e.nome_empresa, COUNT(f.id_usuario_pk) FROM funcionario f RIGHT JOIN empresa e ON f.id_empresa_fk = e.id_empresa_pk GROUP BY e.nome_empresa, f.nome_usuario

Poxa, valeu!!!
Mas e se eu não quiser que mostre o count na minha pesquisa?
Eu li que pra vc usar o group by, vc tem usar, ou count, ou avg, ou sum…

Se não quiser calcular nada, não precisa de group by.
Se quiser colocar alguma condição no valor agregado utilize having.

Exemplo:

    SELECT f.nome_usuario, e.nome_empresa, COUNT(f.id_usuario_pk)    
    FROM funcionario f    
    RIGHT JOIN empresa e    
    ON f.id_empresa_fk = e.id_empresa_pk    
    GROUP BY e.nome_empresa, f.nome_usuario   
    HAVING COUNT(f.id_usuario_pk) > 2

AH TAH!! ENTENDI!!!
MUITO OBRIGADA!!!

uma coisa, se você não quiser calcular count, avg, etc… quando você agrupar, ele vai retornar “desduplicar” linhas que estariam duplicadas, teria o mesmo efeito do “distinct” na consulta.

Assim, isso:

SELECT f.nome_usuario, e.nome_empresa FROM funcionario f RIGHT JOIN empresa e ON f.id_empresa_fk = e.id_empresa_pk GROUP BY e.nome_empresa, f.nome_usuario
teria o mesmo resultado que

SELECT DISTINCT f.nome_usuario, e.nome_empresa FROM funcionario f RIGHT JOIN empresa e ON f.id_empresa_fk = e.id_empresa_pk(a segunda forma não é aceita em todos os SGBDs, o distinct em alguns SGBDs só aceita 1 campo)

Boa… nem lembrei deste detalhe!