gpt4 book ai didi

mysql - 按功能从组中选择最频繁的值 - MySQL

转载 作者:行者123 更新时间:2023-11-29 06:36:01 26 4
gpt4 key购买 nike

我在 Mac 上使用 Sequel Pro 并且有一个这样的表:

Table1
a b
Blah 5
Blah 5
Smoog 5
Choop 7
Choop 7
Choop 7
Smap 7
Smap 7
Tweep 11
Tweep 11
Florg 11

我正在运行这个查询:

Select "MOST FREQUENT OCCURRENCE"(a), b 
From Table1
Group by b

我为“最频繁出现”部分输入的运算符是什么?基本上我想做的是找出每个“b”最常出现的“a”。输出应如下所示:

"MOST FREQUENT OCCURRENCE"(a)    b
Blah 5
Choop 7
Tweep 11

谢谢!

最佳答案

这不是我见过的最漂亮的查询,但它确实有效。请记住,对于大型数据集,它可能会很慢。任何类型的计数通常都是。

SELECT cnts1.a AS a, cnts1.b AS b FROM 
(SELECT a, b, COUNT(*) cnt
FROM Table1 t1
GROUP BY a, b
) AS cnts1
LEFT JOIN
(SELECT a, b, COUNT(*) cnt
FROM Table1 t1
GROUP BY a, b
) AS cnts2
ON cnts1.b = cnts2.b
AND cnts1.cnt < cnts2.cnt
WHERE cnts2.a IS NULL

编辑:

对于非常不友好的重复,还有另一种选择,它只执行一次计数。它不是计算每个 a 的出现次数,然后查看哪个 a 具有最大计数,而是为每个 a 计算一个字符串,它是由出现次数加上 a 本身的值组成。之后,您将获得最大字符串,从中提取 a 的值。

由于在构造字符串时计数必须用零填充,因此此查询可以处理的最大出现次数有限制,在示例中为 99999(填充到 5 位数字)。

SELECT SUBSTRING(cnta, 6) AS a, b
FROM (SELECT b, MAX(cnta) cnta
FROM (SELECT b, CONCAT(LPAD(COUNT(*), 5, '0'), a) cnta
FROM table1
GROUP BY a, b
) cnts
GROUP BY b
) maxcnts

关于mysql - 按功能从组中选择最频繁的值 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24716824/

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