首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:提取元素最常用的值

MySQL:提取元素最常用的值
EN

Stack Overflow用户
提问于 2018-01-31 13:55:32
回答 2查看 50关注 0票数 0

我有一个DB表,里面有一组文本,每一个都有五(5)种情绪。我需要做的是得到每一组行最频繁的情绪,但前提是这种情绪至少出现三次。否则,我不希望在结果集中显示聚合行。例如,我有:

代码语言:javascript
复制
text     | emotion
nice day | happyness
nice day | happyness
nice day | neutral
nice day | neutral
nice day | happyness
hello    | sadness
hello    | sadness
hello    | surprise
hello    | surprise
hello    | neutral

输出应该是:美好的一天,幸福

在这种情况下,文本"Hello“不会显示,因为没有至少3次发生的情绪。

我尝试了很多解决方案,但我找不到一个可行的解决方案.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-31 14:09:53

这有点棘手:

代码语言:javascript
复制
select text, emoticon
from t
group by text, emoticon
having count(*) >= 3 and
       count(*) = (select count(*)
                   from t t2
                   where t2.text = t.text
                   group by t2.emoticon
                   order by count(*) desc
                   limit 1
                  );
票数 1
EN

Stack Overflow用户

发布于 2018-01-31 14:13:52

假设您的表名是情感,所以代码将是

代码语言:javascript
复制
select text,emotion
from emotions
group by text,emotion
having count(emotion)>2

GROUP语句常与聚合函数(COUNT、MAX、MIN、SUM、AVG)一起使用,以将结果集分组为一个或多个列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48543870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档