【发布时间】:2016-05-29 05:18:55
【问题描述】:
很少有这样的问题,但它们不是以简单的方式构建的,使得更通用的情况可以访问答案。这些问题是针对特定情况而构建的。
假设我们有一张桌子
id letter
----------
1 a
2 a
3 b
4 b
5 a
我们如何得到这个结果?
1 a 2
3 b 2
5 a 1
【问题讨论】:
标签: mysql group-by sql-order-by
很少有这样的问题,但它们不是以简单的方式构建的,使得更通用的情况可以访问答案。这些问题是针对特定情况而构建的。
假设我们有一张桌子
id letter
----------
1 a
2 a
3 b
4 b
5 a
我们如何得到这个结果?
1 a 2
3 b 2
5 a 1
【问题讨论】:
标签: mysql group-by sql-order-by
基本上,您需要知道何时有新的“行”要分组。我正在根据更改的字母对它们进行排名
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;
【讨论】: