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

kelompokkan berdasarkan kemunculan pertama dan terakhir

Anda dapat menggunakan kueri berikut:

SELECT MIN(current_day) AS start_day, 
       MAX(current_day) AS stop_day, 
       browser
FROM (
   SELECT current_day, browser,
          @grp := IF(@br = browser, @grp,
                     IF(@br := browser, @grp+1, @grp+1)) AS grp
   FROM mytable 
   CROSS JOIN (SELECT @grp := 0, @br := '') AS vars
   ORDER BY current_day) AS t
GROUP BY browser, grp

Kueri di atas menggunakan variabel, untuk mengidentifikasi pulau dari catatan berurutan yang memiliki browser yang sama nilai. Ini mengembalikan satu baris per browser. Anda harus mengulang subquery yang sama dua kali dan menggunakan UNION jika Anda ingin mendapatkan dua baris terpisah untuk setiap tanggal min/maks.

Demo di sini



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Docker Laravel Mysql:tidak dapat menemukan driver

  2. Temukan baris (tanggal/waktu) yang tumpang tindih dalam satu tabel

  3. Kesalahan duplikat MySQL dengan ALTER IGNORE TABLE

  4. MySQL - PERBARUI beberapa baris dengan nilai berbeda dalam satu kueri

  5. Sisipan massal dengan SQLAlchemy ORM