sql >> Databáze >  >> RDS >> Sqlserver

Najděte maximální hodnotu a zobrazte odpovídající hodnotu z jiného pole na serveru SQL

To lze provést několika způsoby:

Filtr v WHERE klauzule:

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

Nebo poddotaz:

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

Nebo můžete použít TOP WITH TIES . Pokud nemohou existovat žádné remízy, můžete odstranit with ties . To bude zahrnovat všechny řádky, které mají stejnou hodnotu populace:

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

Protože používáte SQL Server, můžete k získání výsledku použít také hodnotící funkce:

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

Viz SQL Fiddle with Demo of all.

Jako vedlejší poznámku k funkci hodnocení můžete použít dense_rank() místo row_number() . Pak v případě, že máte více než jedno město se stejným počtem obyvatel, získáte oba názvy měst. (Viz ukázka)




  1. Jak mohu vstoupit do SQL Server uloženého procesu z mého kódu C#?

  2. Najděte závislé objekty pro tabulku nebo pohled

  3. JSON_TYPE() – Získejte typ hodnoty JSON v MySQL

  4. 2 způsoby, jak zřetězit řetězce a čísla v MariaDB