Como determinar o maior saldo sem max(), min() e order by

Passaram-me um desafio, muito incomodado eu quebrei a cabeça até conseguir. O problema proposto exige conhecimento de SQL.

Temos uma relação (tabela) chamada conta_corrente, na qual temos 2 campos, codigo_da_conta_corrente e saldo.

Deve-se construir uma consulta em SQL que traga o codigo_da_conta_corrente de maior saldo da tabela conta_corrente, fácil certo? Errado… Devemos construir esta consulta sem o uso do max(), min() e order by do SQL.

Esta é a minha resposta:

  select a.codigo_da_conta_corrente, a.saldo

  from conta_corrente a, conta_corrente b
  where a.saldo <= b.saldo
  group by a.codigo_da_conta_corrente, a.saldo
  having count(a.saldo) = 1

Esta é a resposta elaborada pelo Anderson:

  select a.codigo_da_conta_corrente from conta_corrente a
  where
    (select count(b.saldo) from conta_corrente b
     where b.saldo > a.saldo) = 0

Esta é a resposta café com leite (ele usou Transact-SQL) do Rodrigo:

  SET NOCOUNT ON 

  DECLARE @valor NUMERIC(10,2)
  DECLARE @valor2 NUMERIC(10,2) 

  DECLARE teste CURSOR FOR
  SELECT valor FROM sigfls 

  OPEN teste 

  FETCH NEXT FROM teste INTO @valor2 

  WHILE @@FETCH_STATUS = 0
  BEGIN
		IF @valor > @valor2
			SET @valor2 = @valor
		ELSE
			FETCH NEXT FROM teste INTO @valor
  END 

  PRINT @valor2 

  CLOSE teste
  DEALLOCATE teste

Depois de fazer este desafio achei um similar com explicação muito interessante: Os 10 mais por categoria.

0 Respostas para “Como determinar o maior saldo sem max(), min() e order by”


  1. Sem comentários

Deixe uma Resposta