MySQL以COUNT(*)的标准差限制结果

时间:2014-10-23 18:35:09

标签: mysql count standard-deviation

我有一个表存储不同类型媒体的文本标签。每个媒体都可以有多个标签,并且可以多次使用相同的标签。我要做的是返回一个介质的所有标签,这些介质的计数在平均计数的一个标准差内。

例如:Image1有四个标签 - 大,蓝,大,小,蓝。

我正在寻找的结果是:大,蓝 - 因为有两个“大”,两个“蓝色”,但只有一个“小”,这距离平均数不止一个。 / p>

有意义吗?我似乎无法通过一个查询完成此操作。这可能吗?

1 个答案:

答案 0 :(得分:1)

CTE会很好,但看到它们不存在于MySQL中,您可以将问题分成几个子选项。

在以下示例中,将dev.a + -2更改为您之后的任何偏差。

select b.*
from bob b
inner join (
    select tag, count(tag) cnt
    from bob
    group by tag
) cnt on cnt.tag = b.tag
inner join (
    select avg(cnt) a from (
        select tag, count(tag) cnt
        from bob
        group by tag
    ) dev
) dev on cnt.cnt between (dev.a - 2) and (dev.a + 2)