SSMS
 sql >> Teknologi Basis Data >  >> Database Tools >> SSMS

Bagaimana Mendapatkan Perbedaan Waktu MAX Antara Setiap 2 Baris Berturut-turut Per Nilai?

Bisakah kita menggunakan LAG/LEAD saja?

SELECT MAX(diff_sec) FROM
(
  SELECT 
    DATEDIFF(
        SECOND,  
        CreateDT,
        LEAD(CreateDT) OVER(PARTITION BY CODE ORDER BY CreateDT) --next row's createdt
    ) as diff_sec
  FROM Occs
)x

LEAD akan memilih CreateDT berikutnya (berikutnya ditentukan oleh "baris yang memiliki kode yang sama dan CreateDt yang lebih besar untuk sementara setelah CreateDT baris saat ini") relatif terhadap baris saat ini. DATEDIFF mendapatkan perbedaan dalam hitungan detik (pilih kerangka waktu yang sesuai). Itu perlu dibungkus dalam subquery (atau CTE jika Anda mau) karena fungsi jendela LEAD tidak dapat muncul di dalam MAX

Ini mungkin tidak terlalu berguna, tentu saja.. Mungkin tambahkan kode juga:

SELECT x.code, MAX(x.diff_sec) FROM
(
  SELECT 
    code,
    DATEDIFF(
        SECOND,  
        CreateDT,
        LEAD(CreateDT) OVER(PARTITION BY CODE ORDER BY CreateDT) --next row's createdt
    ) as diff_sec
  FROM Occs
)x
GROUP BY x.code



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Bagaimana saya bisa menampilkan rencana eksekusi untuk prosedur tersimpan?

  2. Baik pengguna, 'IIS APPPOOL\App Name', tidak memiliki akses ke database 'SSAS Cube Name', atau database tidak ada

  3. Perbarui kueri dibatalkan oleh pengguna

  4. Bagaimana menghubungkan ke file SQL Server CE menggunakan SSMS

  5. Perkiraan kardinalitas buruk dari paket SSMS – redux