Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Znajdź maksymalną wartość i pokaż odpowiednią wartość z innego pola na serwerze SQL

Można to zrobić na kilka sposobów:

Filtr w WHERE klauzula:

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

Lub podzapytanie:

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

Możesz też użyć TOP WITH TIES . Jeśli nie może być żadnych powiązań, możesz usunąć with ties . Obejmuje to wszystkie wiersze o tej samej wartości populacji:

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

Ponieważ używasz SQL Server, możesz również użyć funkcji rankingu, aby uzyskać wynik:

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

Zobacz SQL Fiddle z demo wszystkich.

Na marginesie funkcji rankingu możesz użyć dense_rank() zamiast row_number() . Jeśli masz więcej niż jedno miasto o tej samej populacji, otrzymasz obie nazwy miast. (Zobacz demo)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008 Spatial:znajdź punkt w wielokącie

  2. Użyj SET TEXTSIZE, aby ograniczyć dane zwracane dla każdego wiersza w SQL Server

  3. Czy mogę używać wielu kursorów na jednym połączeniu z pyodbc i MS SQL Server?

  4. 6 sposobów łączenia ciągu i liczby w SQL Server

  5. Przykład wstawiania SQL Server