Ir para conteúdo

POWERED BY:

Arquivado

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

raquel.caxile

Tabela SQL comando SELECT

Recommended Posts

Olá!
Tenho esse comando simples que está OK:

 

SELECT cliente.nome, cliente.cpf, pedido.vltotal

FROM pedido join cliente

on cliente.idcliente = pedido.idcliente

 

Tenho o comando do maior valor gasto:
SELECT MAX(vltotal) AS TotalGasto
FROM pedido

 

Preciso inserir os 2 clientes que gastaram mais incluindo o nome e cpf e estou com dificuldade.
Se alguém puder me ajudar agradeço muito!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho q você postou em seção errada; aqui é p/ bancos NOsql.
mas supondo que em mysql você deseja exibir quais os 2 clientes que fizeram os 2 maiores pedidos,  tente isso:

SELECT cliente.nome, cliente.cpf, sum(pedido.vltotal) total
FROM pedido join cliente
on cliente.idcliente = pedido.idcliente
group by cliente.idcliente
order by total desc limit 2

qqer coisa, poste qual banco esta usando.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 01/09/2018 at 18:37, raquel.caxile disse:

Olá!
Tenho esse comando simples que está OK:

 

SELECT cliente.nome, cliente.cpf, pedido.vltotal

FROM pedido join cliente

on cliente.idcliente = pedido.idcliente

 

Tenho o comando do maior valor gasto:
SELECT MAX(vltotal) AS TotalGasto
FROM pedido

 

Preciso inserir os 2 clientes que gastaram mais incluindo o nome e cpf e estou com dificuldade.
Se alguém puder me ajudar agradeço muito!

 

Conseguiu resolver ?

estou com a mesma dificuldade. e é o mesmo excercio da facu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma forma , subselect com max.

 

SELECT cliente.nome, cliente.cpf, pedido.vltotal

FROM pedido join cliente

on cliente.idcliente = pedido.idcliente

Where pedido.valor = (SELECT MAX(vltotal) AS TotalGasto
                                        FROM pedido pedido2

                                        where pedido2.idcliente = pedido.idcliente)

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por FabianoSouza
      Eu preciso exibir duas informações em minha consulta:
      1) A quantidade de pessoas inscritas numa turma de treinamento (isso é feito com um simples COUNT)
      2) Uma flag de excesso de inscrições na turma. Seria obtido pela comparação entre a quantidade máxima permitida (já existe esse campo) e o COUNT feito acima.
       
      Até aqui sem problemas.
       
      O que quero é evitar fazer duas contagens (1 para saber a quantidade de inscritos, e outra para gerar a flag de excesso de inscrições).
       
      Há uma forma de utilizar UMA contagem para atender as duas necessidades?
       
      Meu código está assim:
       
      ... --AQUI FAZ A COMPARAÇÃO PARA GERAR A FLAG DE EXCESSO DE INSCRIÇÕES , CASE WHEN (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) > T.lotacaoMax Then T.nome + '&nbsp;'+'<span class=%22icon-aviso fcolor-critico%22 style=%22font-size:18px%22 title=Excesso&nbsp;de&nbsp;inscrições></span>' --AQUI FAZ A CONTAGEM DE INSCRIÇÕES , (SELECT COUNT(*) FROM dbo.tab AS ITT WHERE ITT.codTurmaDeTreina = T.id) AS 'Inscrições'  
    • Por FabianoSouza
      Possuo uma coluna de data.
      Eu gostaria que os registros com datas futuras aparecessem no topo do meu select, em relação aos demais registros.
      Em seguida, gostaria que somente esses registros com datas futuras ficassem em ordem crescente.
      Algo como 
       
      João  | 16/11/2023
      Maria | 17/11/2023
      José  |  20/11/2023
       
      -----------------------------
      (demais registros da base)
      Antônio   |  20/05/2023
      Rosa        | 15/08/2023
      Cida         | 15/10/2022
      Pedro      |  20/05/2021
      Paulo      |  14/11/2020
       
      O select seria esse.
      select dbo.formataData(ET.dataInicial) AS 'data' FROM dbo.tab AS ET GROUP BY ET.dataInicial  
    • Por FabianoSouza
      Tenho uma function que precisa receber 02 argumentos.
      Ela funciona se eu aplicar num select qualquer. Mas se eu aplicar num select dinâmico, ocorre erro.
      Veja trecho do meu select.
      ... SET @sql = @sql +', dbo.retornaIco_ItemBloq((SELECT COUNT(*) FROM dbo.tab AS TT2 WHERE TT2.codCategTreina = CTT.id),'+@title+') AS ''resp''' ... No caso, o primeiro argumento da function dbo.retornaIco_ItemBloq é um SELECT COUNT.
      O segundo argumento é uma variável (que está devidamente declarada e definida).
       
      O erro ocorre porque ao executar (chamando EXEC(@sql) ), o SQL entende que o segundo argumento é uma coluna da consulta principal, pois existe uma vírgula antes da variável @title (que é o segundo argumento da function).
      Repito. Se eu aplicar essa function num select normal, funciona normalmente. Porém, preciso que funcione num SQL dinâmico porque é esse é o padrão que estou adotando para o sistema todo.
       
      A function dbo.retornaIco_ItemBloq faz o seguinte:
      1) Recebe o valor do COUNT e da variável @title
      2) Se o COUNT for maior que  Zero, cria uma tag HTML (uma SPAN), define sua title com o valor da variável @title e passa para uma variável
      3) Retorna o HTML que será exibido no resultado da consulta principal
      É super simples.
       
      Há outra forma de chamar a function?
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
×

Informação importante

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