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

Hasil pengelompokan MySQL berdasarkan periode waktu

Dengan sedikit info di tabel Anda, ini tidak lebih dari ide dasar untuk Anda, tetapi Anda bisa melakukan sesuatu seperti ini:-

SELECT COUNT(*)
FROM
(
    SELECT a.TimeStamp AS ThisTimeStamp, MIN(b.TimeStamp) AS NextTimeStamp
    FROM SomeTable a
    INNER JOIN SomeTable b
    ON a.TimeStamp < b.TimeStamp
    GROUP BY a.TimeStamp
) Sub1
WHERE Sub1.ThisTimeStamp < (Sub1.NextTimeStamp - 600)

Dapatkan semua stempel waktu dan gabungkan mereka dengan stempel waktu lain yang lebih besar, dan gunakan MIN untuk mempersempitnya ke stempel waktu terbesar berikutnya. Kemudian dari itu pilih hitungan di mana perbedaannya kurang dari 600 detik (dengan asumsi cap waktu unix).

EDIT - Jika Anda ingin terikat untuk jumlah jeda 10 menit+ dalam acara untuk pengguna, maka:-

SELECT COUNT(*)
FROM
(
    SELECT a.user_id, a.TimeStamp AS ThisTimeStamp, MIN(b.TimeStamp) AS NextTimeStamp
    FROM SomeTable a
    INNER JOIN SomeTable b
    ON a.TimeStamp < b.TimeStamp
    AND a.user_id = b.user_id
    GROUP BY a.user_id, a.TimeStamp
) Sub1
WHERE Sub1.ThisTimeStamp < (Sub1.NextTimeStamp - 600)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya harus mengindeks kueri dengan dua kondisi rentang?

  2. MySQL memilih semua baris dari bulan lalu hingga (sekarang () - 1 bulan), untuk tujuan perbandingan

  3. MySQL Trigger - Menyimpan SELECT dalam variabel

  4. SQLSTATE[HY000] [2002] php_network_getaddresses:getaddrinfo gagal:nodename atau servname disediakan, atau tidak diketahui

  5. XAMPP/MySQL:tidak dapat membuka file tablespace tabel tunggal .\mysql\innodb_index_stats.ibd setelah restart MySQL