sql >> Database >  >> RDS >> Mysql

Hoe volgende rijen groeperen (op basis van een criterium) en ze vervolgens tellen [MySQL]?

Om dat te doen heb ik een aantal variabelen gebruikt, de tabelstructuur, ik heb er zelf een gemaakt om te testen en het is:

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  )

de vraag eindigde als volgt:

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

je kunt zien dat het werkt in SQLFIDDLE als je vragen hebt, laat het me weten.

In de SQLFIDDLE




  1. CakePHP 3 defaultConnectionName in plug-inmodel werkt niet

  2. Is het mogelijk om toegang te krijgen tot een .mdf-database zonder SQL Server?

  3. Maandag instellen als eerste dag van de week in SQL Server

  4. Datums vergelijken in SQL Server