sql >> Databasteknik >  >> RDS >> Mysql

Hur grupperar man efterföljande rader (baserat på ett kriterium) och räknar dem sedan [MySQL]?

För att göra det använde jag ett par variabler, tabellstrukturen, jag skapade min egen bara för att testa och det är:

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  )

frågan slutade så här:

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

du kan se att det fungerar i SQLFIDDLE låt mig veta om du har några frågor.

I SQLFIDDLE




  1. Hur vet jag om min PostgreSQL-säkerhetskopia är bra?

  2. SQLite-undantag vid försök att ta bort rad

  3. MYSQL överför samma eller mindre än saldo

  4. Problem med att läsa/skriva UTF-8-data i MySQL från Java med JDBC-kontakt 5.1