Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Encontre o valor máximo e mostre o valor correspondente de um campo diferente no servidor SQL


Existem várias maneiras de fazer isso:

Um filtro no WHERE cláusula:
select id, name, population
from yourtable
where population in (select max(population)
                     from yourtable)

Ou uma subconsulta:
select id, name, population
from yourtable t1
inner join
(
  select max(population) MaxPop
  from yourtable
) t2
  on t1.population = t2.maxpop;

Ou você pode usar TOP WITH TIES . Se não houver empates, você poderá remover o with ties . Isso incluirá todas as linhas que tenham o mesmo valor de população:
select top 1 with ties id, name, population
from yourtable
order by population desc

Como você está usando o SQL Server, também pode usar funções de classificação para obter o resultado:
select id, name, population
from
(
  select id, name, population,
    row_number() over(order by population desc) rn
  from yourtable
) src
where rn = 1

Veja SQL Fiddle com Demo de tudo.

Como uma observação lateral sobre a função de classificação, você pode usar dense_rank() em vez de row_number() . Então, no caso de você ter mais de uma cidade com a mesma população, você receberá os dois nomes de cidades. (Veja demonstração)