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…
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!