Ir para conteúdo

Arquivado

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

Junior22

Query somando total de indicados

Recommended Posts

Pessoal, tenho essa tabela e gostaria de fazer uma consulta trazendo o resultado consolidado que está abaixo, alguém tem uma dica de como fazer isso? Note que a coluna "Indicado por" é o ID da pessoa q fez a indicação:

image.png.3a534cedb3499ded42a4cc6bd7a4001f.png     

 

- A Maria indicou 2 pessoas (Jose e Joao) diretamente, o Jose indicou 1 pessoa (Paulo), entao o Paulo é um indicado direto do Jose e indireto da Maria. O Paulo indicou diretamente 2 pessoas (Andre e Silas) que contam para a Maria como indicados indireto. O Joao, indicado direto da Maria, indicou 1 pessoa (Felipe). Se somarmos os indicados direto e indireto da Maria, teremos um total de 6 Pessoas (ver tabela abaixo).

- O Jose indicou uma pessoa diretamente (Paulo), o Paulo indicou diretamente 2 pessoas (Andre e Silas) que são dois indiretos do Jose. Então o Jose tem um total de 3 pessoas somando as diretas e indiretas.

Quero trazer o resultado abaixo na consulta:

image.png.ad87c0e6d47043691823864f77579700.png

 

Obrigado.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, juro que nao entendi, pq a Maria tem 6 como count e nao 4, pq pela sua logica, sao somente 2 niveis para esta soma,

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
30 minutos atrás, A.Jr disse:

cara, juro que nao entendi, pq a Maria tem 6 como count e nao 4, pq pela sua logica, sao somente 2 niveis para esta soma,

se

Oi A.Jr, todos os cadastrados nessa tabela só existem por causa da Maria. Se pegarmos o ultimo que é o Silas, ele foi indicado pelo ID "4" que é o Paulo, o Paulo foi indicado pelo id "2" que é o Jose e o Jose foi indicado pelo ID "1" que é a Maria. Se fizermos isso para todos os cadastrados sempre vamos chegar na Maria como primeiro nível e todos só existem por causa dela.

 

Já o Jose (ID=2), indicou o Paulo (ID=4) e o Paulo indicou o Andre e Silas, então o Jose tem 3 pessoas indicadas somando a indicação direta (Paulo) e as duas outras indireta (Andre e Silas). Já o Paulo possui apenas duas indicações direta e nenhuma indireta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por FabianoSouza
      Preciso corrigir o erro "Somente uma expressão pode ser especificada na lista de seleção quando a subconsulta não é introduzida com EXISTS." da minha consulta.
      SELECT TA.titulo AS 'Trilha' , (SELECT CAST(ROUND((Comportamental * 100.0) / (Comportamental + Técnico), 2) AS DECIMAL(5,1)) AS Comportamental ,CAST(ROUND((Técnico * 100.0) / (Comportamental + Técnico), 2) AS DECIMAL(5,1)) AS Técnico FROM ( SELECT SUM(CASE WHEN dbo.tabB.enfoque = '1' THEN 1 ELSE 0 END) AS Comportamental, SUM(CASE WHEN dbo.tabB.enfoque = '2' THEN 1 ELSE 0 END) AS Técnico, COUNT(*) AS Total FROM dbo.tabB ) tab ) FROM dbo.tabA AS TA Nessa consulta, preciso trazer o título (da tabA) e o resultado de um cálculo feito na subconsulta, nos campos Comportamental e Técnico.
    • Por JoãoNeto2
      Eu estava usando um programa em PHP que conectava e lia um banco de dados SQL Server. Do nada ele parou de funcionar apresentando a seguinte mensagem :
      O cliente não pode estabelecer conexão porque foi encontrado um erro durante os handshakes anteriores ao logon. As causas comuns incluem a tentativa do cliente de conectar-se a uma versão sem suporte do SQL Server, o servidor muito ocupado para aceitar novas conexões ou uma limitação de recursos (memória ou máximo de conexões permitidas) no servidor.
      Algumas informações para esclarecer :
      1-Consigo conectar o banco via Dbeaver da própria máquina que o programa PHP deixou de funcionar
      2-De outra máquina consigo conectar esse mesmo banco com o mesmo programa PHP
      3-Essa mesma máquina conecta outro banco SQL Server de outro cliente
      Ou seja, o mesmo programa conecta o mesmo banco mas de outra máquina e a mesma máquina consegue conectar outro banco SQL.
      O que pode ser?
    • Por mamotinho
      Olá, pessoal mais uma vez venho pedi a ajuda de vocês estou com um problema ao roda uma query que montei, eu sou iniciante na area e não tenho muito conhecimento então o codigo que fiz foi parte de meu conhecimento básico. bom o que eu quero resolver nessa query é o seguinte, eu quero consultar uma tabela e nela pega todos os registros com a a data vencida e lista ela dentro do while em seguida retornar dentro desse if o valor da coluna de cada uma exemplo de como fiz e ficou com loop infinito.

       
      declare @id int declare @getdate datetime select @id = IDCadastrado, @getdate = RegDate from BancoTeste.dbo.MinhaTabela where RegDate < getdate() while @id is not null begin select * from BancoTeste.dbo.MinhaTabela where IDCadastrado = @id end quando eu executo isso ai ele executa infinitamente o valor do primeiro registro repetidamente.
    • Por rdavisp
      Senhores, recorro a ajuda de vocês pois venho do banco de dados Oracle e tenho encontrado certa dificuldade para trabalhar com o SQL Server 2012, mais especificamente com a linguagem Transact-SQL. Pelo o que eu tenho percebido, não se trata de uma linguagem fortemente tipada em relação ao gerenciamento de escopo de variáveis. Exemplo, como as variavéis de cursores, que caso a primeira interação atribua valores válidos para as variáveis e caso na segunda volta do looping seja retornado nulo é mantido o valor da primeira interação. Outra coisa que eu estou tentando entender é o fato da seguinte query dentro de um bloco não retornar resultado dinamincamente na execução:
      SELECT @IDSALAMODELO = SM.ID
            ,@NOMEGRUPO    = G.NOME
        FROM CRT C
            ,GRUPO G
            ,SALAMODELO SM
            ,EMPRESA E
       WHERE C.IDGRUPO      = G.ID
         AND G.IDSALAMODELO = SM.ID
         AND SM.IDEMPRESA   = E.ID
         --
         AND C.ID       = CAST(@CRT AS INT)
         AND C.ATIVO    = @ATIVO
         AND G.ATIVO    = @ATIVO
         AND G.IDINTAKE = @INTAKEATUAL
         AND E.ID       = @IDEMPRESA
      E quando a executo numa janela de consulta com os parametros hardcode ela me retorna resultado. Não estou limpando elas em momento algum e ja tentei deixar os valores hardcode dentro do bloco, mas ainda assim, o resultado permance o mesmo, ou seja, não me retorna resultado.
      Por isso, se possível, gostaria da opinião de vocês para que eu posso solucionar esse problema.
      Grato.
    • Por Bruno_Sam
      Preciso buscar em todas as tabelas do banco um nome de cliente. Não sei quais tabelas contem o nome desse cliente e preciso pois esta errado o nome. Existe algum select que faça busca de um valor em todas as tabelas e fala quais estão???
       
      Obs:Não posso criar tabela temporaria no banco.
×

Informação importante

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