我有一个表存储不同类型媒体的文本标签。每个媒体都可以有多个标签,并且可以多次使用相同的标签。我要做的是返回一个介质的所有标签,这些介质的计数在平均计数的一个标准差内。
例如:Image1有四个标签 - 大,蓝,大,小,蓝。
我正在寻找的结果是:大,蓝 - 因为有两个“大”,两个“蓝色”,但只有一个“小”,这距离平均数不止一个。 / p>
有意义吗?我似乎无法通过一个查询完成此操作。这可能吗?
答案 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)