【问题标题】:Mysql group by after order by?mysql group by后order by?
【发布时间】: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


【解决方案1】:

基本上,您需要知道何时有新的“行”要分组。我正在根据更改的字母对它们进行排名

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

【讨论】:

    猜你喜欢
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 2021-02-22
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多