Mysql
 sql >> Baza danych >  >> RDS >> Mysql

GROUP BY dla ciągłych wierszy w 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

Skrypty tworzenia tabel do testowania:

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. MySQL oblicza średnią ruchomą z N wierszy

  2. Wymagany do przyłączenia się do 2 stołów z ich FK w trzecim stole

  3. Załaduj dane z bazy danych MySQL do pól tekstowych HTML po kliknięciu przycisku

  4. Parametr JDBC verifyServerCertificate=false łączy się bez potrzeby posiadania clientkeystore i truststore

  5. Problemy PHP mysql charset utf8