Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Solusi MySQL untuk fungsi jendela

MySQL tidak memiliki dukungan fungsi jendela, tetapi Anda dapat menggunakan subkueri terkait di SELECT list untuk mengambil tepat satu kolom:

SELECT
  event_id,
  event_type, 
  event_time,
  (SELECT COUNT(*) FROM events EC WHERE EC.event_type = E.event_type AND EC.event_time > E.event_time) AS subsequent_event_count
FROM
  events E
WHERE ...

Lakukan EXPLAIN dia. Ini agak sama dalam hal logika eksekusi sebagai CROSS APPLY di SQL Server.

Pendekatan lain adalah bergabung sendiri:

SELECT
  E.event_id,
  E.event_type,
  E.event_time,
  COUNT(EC.event_id) AS subsequent_event_count
FROM
  events E
  LEFT JOIN events EC
    ON E.event_type = EC.event_type AND E.event_type < EC.event_type
GROUP BY
  E.event_id,
  E.event_type,
  E.event_time

Uji kinerja kedua pendekatan.

Anda dapat melakukan lebih banyak kegiatan kreatif lainnya, seperti

EC.event_time > E.event_time AND EC.event_time < E.event_time + INTERVAL 1 DAY


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memahami Tampilan dalam SQL

  2. Simpan beberapa baris dari database mysql menjadi satu variabel tunggal

  3. PHP:mysql v mysqli v pdo

  4. Tidak dapat memuat plugin otentikasi 'caching_sha2_password' di Netbean

  5. MySQL GROUP OLEH dua kolom