gpt4 book ai didi

MySQL 使用 Group By 选择最大出现次数

转载 作者:行者123 更新时间:2023-11-29 21:08:34 25 4
gpt4 key购买 nike

我有一个表(log_entries):

id|token|area|
1| 543 | AA |
2| 452 | BB |
3| 543 | BB |
4| 634 | CC |
5| 436 | AA |

我想创建前 5 个区域的列表,按 token 分组,但是使用的区域是 token 使用的最后一个区域。基本上是前 5 个区域的列表,其中每个 token 仅获得一票,并且它的投票是针对其记录的最后一个区域。

例如,对于上表,列表如下所示:

|area|count|
| BB | 2 |
| AA | 1 |
| CC | 1 |

如何在 MySQL 语句中执行此操作? (顺便说一句,表很大 > 50,000 行)

最佳答案

SQL 表表示无序集。您需要另一列来指定顺序。

以下是获取每个 token 的最新区域的一种方法:

select area, count(*)
from (select t.*,
(@rn := if(@t = token, @rn + 1,
if(@t := token, 1, 1)
)
) as seqnum
from t cross join
(select @rn := 0, @t := '') params
order by tokens, ??
) t
where seqnum = 1
group by area
order by count(*) desc;

您需要将 ?? 替换为指定顺序的列名称,以确定最新的。

关于MySQL 使用 Group By 选择最大出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36612720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com