sql >> Database teknologi >  >> RDS >> Mysql

Hvordan grupperer man efterfølgende rækker (baseret på et kriterium) og tæller dem derefter [MySQL]?

For at gøre det brugte jeg et par variable, tabelstrukturen, jeg oprettede min egen kun til test, og den er:

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  )

forespørgslen endte på denne måde:

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 det virker i SQLFIDDLE hvis du har spørgsmål, så lad mig det vide.

I SQLFIDDLE




  1. Sådan rettes en Lås Vent Timeout Overskredet fejl i MySQL

  2. Konverter streng til datetime-værdi i LINQ

  3. Skinner bestilles efter foreningsfelt

  4. Viser mysql-rækkers indhold i html-tabel ved hjælp af php