像这样的问题很少,但它们不是以一种简单的方式构造的,从而使答案能够被更通用的情况所访问。这些问题是针对特定案例而构建的。
假设我们有一张桌子
id letter
----------
1 a
2 a
3 b
4 b
5 a我们如何得到这个结果呢?
1 a 2
3 b 2
5 a 1发布于 2016-05-29 13:41:19
基本上,当你有一个新的“行”需要分组时,你需要知道。我从更改的字母中对它们进行排序
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
https://stackoverflow.com/questions/37506480
复制相似问题