sql >> Databáze >  >> RDS >> Mysql

Jak seskupit následující řádky (na základě kritérií) a poté je spočítat [MySQL]?

K tomu jsem použil pár proměnných, strukturu tabulky, vytvořil jsem si vlastní jen pro testování a je 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  )

dotaz skončil takto:

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

můžete vidět, že to funguje v SQLFIDDLE pokud máte nějaké dotazy, dejte mi vědět.

V SQLFIDDLE




  1. Mysql, PDO - Like příkaz nefunguje pomocí bindParam

  2. Řazení řádků podle řádků v jiné tabulce za účelem naplnění seznamu O čem se mluví

  3. MySQL křížová / kontingenční agregace. Odebírání počtů na základě sloupce v jiné tabulce

  4. Sloučení více řádků do jednoho řádku a více sloupců na mysql