我在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
我为“最常见的发生”提供了什么样的经营者?部分?基本上我想要做的是弄清楚" a"最经常发生在每个" b"。输出应如下所示:
"MOST FREQUENT OCCURRENCE"(a) b
Blah 5
Choop 7
Tweep 11
谢谢!
答案 0 :(得分:2)
不是我见过的最漂亮的查询,但它确实有效。请记住,大型数据集可能会很慢。任何类型的计数通常都是。
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