2016-05-29 15 views
0

このような質問はほとんどありませんが、より一般的なケースで回答にアクセスできるように簡単な方法で構築されているわけではありません。これらの質問は、特定のケースのために作成されました。ご注文後にMysqlグループ?

は、我々はこの結果を得るのですかテーブル

id letter 
---------- 
1 a 
2 a 
3 b 
4 b 
5 a 

があると?

1 a 2 
3 b 2 
5 a 1 
+0

のオフの可能性のある重複し、それらをランク付けしています(http://stackoverflow.com/questions/14770671/mysql-order-by- [グループの前によるMySQLの順序をで]グループ前) –

答えて

2

基本的に、グループを解除する新しい「行」があることを知る必要があります。私が変更された文字

select min(id), letter, sum(my_count) 
from (
    select 
     id, letter, count(id) as my_count, 
     @rank := if (@letter = letter, @rank, @rank + 1) as rank, 
     @letter := letter 
    from test 
    cross join (select @rank := 0, @letter := '') t 
    group by id 
) t 
group by rank; 

FIDDLE