Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

alexandrinoneto

Consulta para valores que aparecem X vezes

Recommended Posts

Bom dia pessoal.

 

Gostaria de ajuda em uma consulta.

 

O cenário é simples:

 

tabela chamado tem um fk da tabela usuario. Que representa o usuario que abriu o chamado.

 

Preciso saber quais os usuarios que abriram mais de 3 chamados por exemplo.

 

tentei com inner join e having count no final mas não consegui.

 

 

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

algo assim

select usuario,count(*)
from posts
group by usuario
having count(*) >= 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito Motta, mas que quero pegar o nome dos usuários e não o código. É aí que entra a complicação. Com essa consulta eu consegui pegar o nome do usuario que abriu mais chamados e a quantidade. Mas ainda preciso dos nomes dos que abriram mais de 3 chamados.

select distinct usuario_nome, count(quantidade)
from (select usuario.nome as usuario_nome, count(usuario.id) as quantidade from chamado
inner join usuario on chamado.id_usuario = usuario.id
group by usuario.id) 
as teste;

Compartilhar este post


Link para o post
Compartilhar em outros sites

  1. select distinct usuario_nome, count(quantidade)

  2. from (select usuario.nome as usuario_nome, count(usuario.id) as quantidade from chamado

inner join usuario on chamado.id_usuario = usuario.id

group by usuario.id) having count(quantidade) >= 3

as teste;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta, a sua resposta dá um Every derived table must have its own alias. Já tentei colocar AS onde possivelmente esta faltando mas nada resolve.

 

O objetivo é que em uma coluna do resultado da consulta seja mostrado os nomes dos usuarios que tenham mais de 3 chamados e na outra coluna a quantidade de chamados dos respectivos usuários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Every derived table must have its own alias

 

Toda tabela derivada deve ter seu próprio alias

 

A tabela virtual deve ter um alias, tenta isto

 

  1. select distinct usuario_nome, count(quantidade)
  2. from (select usuario.nome as usuario_nome, count(usuario.id) as quantidade from chamado) chamado
  3. inner join usuario on chamado.id_usuario = usuario.id
  4. group by usuario.id) having count(quantidade) >= 3
  5. as teste;

Compartilhar este post


Link para o post
Compartilhar em outros sites

basicamente uma virtual conta e faz um join , creio que funciona

    select usuario_nome, count(quantidade)
    FROM (SELECT id_usuario, COUNT(USUARIO.ID) AS QUANTIDADE
          FROM CHAMADO
          GROUP BY id_usuario) chamado
    inner join usuario on chamado.id_usuario = usuario.id
    GROUP BY USUARIO.ID
    having count(quantidade) >= 3

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

algo assim

select usuario,count(*)
from posts
group by usuario
having count(*) >= 3

 

Não entendo porque isso não funcionaria:

 

SELECT usuario.nome, COUNT(usuario.id) AS quantidade

FROM chamado

INNER JOIN usuario ON usuario.id = chamado.id_usuario

GROUP BY usuario.id

HAVING quantidade >= 3

 

Entendendo que o 'chamado.id_usuario' seria o autor do chamado, ou seja, quem abriu o chamado. Espero ter ajudado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.