Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

nhóm theo lần xuất hiện đầu tiên và lần cuối cùng

Bạn có thể sử dụng truy vấn sau:

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

Truy vấn trên sử dụng các biến, để xác định các đảo của các bản ghi liên tiếp có cùng một browser giá trị. Nó trả về một hàng cho mỗi trình duyệt. Bạn phải lặp lại cùng một truy vấn con hai lần và sử dụng UNION nếu bạn muốn lấy hai các dòng riêng biệt cho mỗi ngày tối thiểu / tối đa.

Demo tại đây



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn MySQL XML

  2. Sự gia tăng nguyên tử với Khung thực thể

  3. MySQL:Cách cho phép kết nối từ xa với mysql

  4. MySQL - tìm các từ bao quanh từ khóa được tìm kiếm

  5. Tại sao các chữ cái tiếng Ả Rập không được chèn vào cơ sở dữ liệu?