Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Memahami hubungan antara fungsi peringkat, OVER(), GROUP BY?

OVER() klausa diperlukan agar SQL Server tahu persis bagaimana Anda ingin menentukan hal-hal seperti RANK() . Apa RANK() yang Anda harapkan jika Anda tidak menyediakan SQL Server dengan kriteria pemesanan? Apakah pemenang lomba adalah yang memiliki waktu tercepat, waktu paling lambat, atau nama depan berdasarkan abjad?

Anda tidak perlu menghapus ORDER BY klausa ketika Anda menambahkan ORDER BY klausa di dalam OVER() . Ini digunakan secara independen - satu untuk menentukan RANK() dan yang lainnya untuk mendiktekan pemesanan.

Jadi, misalnya, jika Anda ingin mengembalikan yang menyelesaikan balapan, tetapi mengurutkannya dari tempat terakhir ke tempat pertama, Anda dapat mengatakan:

SELECT 
  name, 
  finish_time, 
  [rank] = RANK() OVER (ORDER BY finish_time) -- fastest first
FROM 
  dbo.race_table
ORDER BY 
  finish_time DESC; -- fastest last


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masukkan tanda kutip ganda ke dalam output SQL

  2. Microsoft Mengumumkan SQL Server 2012 R2 dan SQL Server 2012 R3!

  3. Bagaimana cara melakukan LEFT JOIN di SQL Server antara dua pernyataan SELECT?

  4. Gabungkan semua geometri dalam tabel SQL Server seperti GeomUnion di Postgres

  5. Tweet Lucu Tentang Kehidupan DBA