sql >> Database teknologi >  >> RDS >> Sqlserver

Find max værdi og vis tilsvarende værdi fra andet felt i SQL server

Der er flere måder, hvorpå dette kan gøres:

Et filter i WHERE klausul:

select id, name, population
from yourtable
where population in (select max(population)
                     from yourtable)

Eller en underforespørgsel:

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

Eller du kan bruge TOP MED BÅND . Hvis der ikke kan være nogen bindinger, så kan du fjerne med bånd . Dette vil inkludere alle rækker, der har samme populationsværdi:

select top 1 with ties id, name, population
from yourtable
order by population desc

Da du bruger SQL Server, kan du også bruge rangeringsfunktioner til at få resultatet:

select id, name, population
from
(
  select id, name, population,
    row_number() over(order by population desc) rn
  from yourtable
) src
where rn = 1

Se SQL Fiddle with Demo of all.

Som en sidebemærkning til rangeringsfunktionen vil du måske bruge dense_rank() i stedet for row_number() . Så hvis du har mere end én by med samme befolkning, får du begge bynavne. (Se Demo)




  1. Hvor klausul skal filtreres rækker i MySQL

  2. Sådan sletter du en kolonne i SQL

  3. Hvordan laver du date-matematik, der ignorerer året?

  4. Skriver du valgfrie parametre inden for lagrede procedurer i MySQL?