php mysql group by_php – 根据mySQL中的COUNT()值限制GROUP BY

我正在将事件记录到MysqL数据库中,并希望获得前3个事件用于监视目的.

我的表事件日志如下所示:

+----+------------------+---------------------+

| id | eventname | eventdate |

+----+------------------+---------------------+

| 0 | machine1.started | 2016-09-04 19:22:23 |

| 1 | machine2.reboot | 2016-09-04 20:23:11 |

| 2 | machine1.stopped | 2016-09-04 20:24:12 |

| 3 | machine1.started | 2016-09-04 20:25:12 |

| 4 | machine1.stopped | 2016-09-04 23:23:16 |

| 5 | machine0.started | 2016-09-04 23:24:00 |

| 6 | machine1.started | 2016-09-04 23:24:16 |

| 7 | machine3.started | 2016-09-04 23:25:00 |

| 8 | machine4.started | 2016-09-04 23:26:00 |

| 9 | cluster.alive | 2016-09-04 23:30:00 |

| 10 | cluster.alive | 2016-09-05 11:30:00 |

+----+------------------+---------------------+

查询最终应返回以下内容,持有

>最常发生的前3个事件(基于MysqL的COUNT()函数生成的列事件计数),按事件名称分组

>只有2行,其中eventcount = 1,但仅当1位于前3个事件计数内时(因为有很多事件发生在

一次,因此会超载我的前端)

基于上表的所需结果示例:

+------------+------------------+

| eventcount | eventname |

+------------+------------------+

| 3 | machine1.started |

| 2 | machine1.stopped |

| 2 | cluster.alive |

| 1 | machine0.started |

| 1 | machine2.started |

+------------+------------------+

请注意,我不需要仅返回3行,而是具有3个最高事件数量的行.

我通过搞乱下面的查询字符串进行了大量的实验,包括多个选择和可疑的CASE … WHEN条件,但是无法使其按照我需要的方式工作.

SELECT COUNT(id) AS 'eventcount',eventname

FROM eventlog

GROUP BY eventname

ORDER BY eventcount DESC;

以高效的方式获得理想结果的最佳方法是什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值