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

Jak pogrupować kolejne wiersze (w oparciu o kryterium) a następnie je policzyć [MySQL]?

W tym celu użyłem kilku zmiennych, struktury tabeli, stworzyłem własną tylko do testów i to:

create table abc (id int, name varchar(20),type int);

insert into abc values 
( 1 , 'A'    , 1  ),
( 2 , 'A'    , 2 ),
( 3 , 'B'    , 1  ),
( 4 , 'A'    , 1  ),
( 5 , 'A'    , 4  ),
( 6 , 'A'    , 5  )

zapytanie zakończyło się tak:

set @a:='';
set @counter:=1;
set @groupby:=0;
select *,count(REPEATED) from (select name,if(@a=name,@counter:[email protected]+1,@counter:=1) as rep,if(@counter=1,@groupby:[email protected]+1,@groupby) as repeated,@a:=name type from abc) as t group by repeated

możesz zobaczyć, że działa w SQLFIDDLE jeśli masz jakieś pytanie, daj mi znać.

W SQLFIDDLE




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Model bazy danych EAV, lista rekordów zgodnie z wyszukiwaniem

  2. Co powinien wiedzieć każdy programista PHP?

  3. Uzyskaj pozostałe dni, godziny i minuty za pomocą mySql

  4. Laravel - PDO Prepared Statement - Nie można wykonywać zapytań, gdy inne niebuforowane zapytania są aktywne

  5. Jak zautomatyzować zapytania tabel przestawnych w MySQL