我在Mac上使用了续集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谢谢!
发布于 2014-07-13 00:19:25
这不是我见过的最漂亮的问题,但有效。请记住,对于大型数据集来说,它可能会比较慢。任何一种计数都是。
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
) maxcntshttps://stackoverflow.com/questions/24716824
复制相似问题