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

GROUP BY untuk baris berkelanjutan dalam SQL

SELECT  MIN(id) AS id, MIN(ts) AS ts, MIN(state) AS state, COUNT(*) cnt
FROM    (
        SELECT  @r := @r + (@state != state) AS gn,
                @state := state AS sn,
                s.*
        FROM    (
                SELECT  @r := 0,
                        @state := 0
                ) vars,
                t_state s
        ORDER BY
                ts
        ) q
GROUP BY
        gn

Skrip pembuatan tabel untuk pengujian:

CREATE TABLE t_state (id INT NOT NULL PRIMARY KEY, state INT NOT NULL, ts DATETIME NOT NULL);

INSERT
INTO  t_state
VALUES
(12,   1,      '2009-07-16 10:00'),
(45,   2,      '2009-07-16 13:00'),
(67,   2,      '2009-07-16 14:40'),
(77,   1,      '2009-07-16 15:00'),
(89,   1,      '2009-07-16 15:30'),
(99,   1,      '2009-07-16 16:00');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ext PDO PHP7 membaca seluruh hasil yang disetel ke dalam memori?

  2. Perbedaan antara NULL dan Nilai Kosong di Mysql

  3. Bagaimana menangani Server MySQL berjalan dengan opsi --secure-file-priv sehingga tidak dapat menjalankan pernyataan ini di Mac

  4. Bagaimana MySQL Menyimpan Enum?

  5. Tetapkan kembali izin akses host ke pengguna MySQL