Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tìm giá trị tối đa và hiển thị giá trị tương ứng từ trường khác nhau trong máy chủ SQL

Có một số cách có thể được thực hiện:

Bộ lọc trong WHERE mệnh đề:

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

Hoặc một truy vấn con:

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

Hoặc bạn có thể sử dụng TOP WITH TIES . Nếu không thể có ràng buộc, thì bạn có thể xóa with ties . Điều này sẽ bao gồm bất kỳ hàng nào có cùng giá trị tổng thể:

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

Vì bạn đang sử dụng SQL Server nên bạn cũng có thể sử dụng các hàm xếp hạng để nhận được kết quả:

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

Xem SQL Fiddle với Demo của tất cả.

Như một lưu ý phụ về chức năng xếp hạng, bạn có thể muốn sử dụng dense_rank() thay vì row_number() . Sau đó, trong trường hợp bạn có nhiều hơn một thành phố có cùng dân số, bạn sẽ nhận được cả hai tên thành phố. (Xem 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. Toán tử OR Ngắn mạch trong SQL Server

  2. SQL Server, chuyển đổi một phiên bản được đặt tên thành phiên bản mặc định?

  3. Cách gửi email từ SQL Server (T-SQL)

  4. Cách loại bỏ Ràng buộc trong SQL Server (T-SQL)

  5. 7 cách trả về tất cả các bảng có khóa ngoại trong SQL Server