获取mysql中连续重复记录的最大数量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了获取mysql中连续重复记录的最大数量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1638字,纯文字阅读大概需要3分钟。
内容图文
![获取mysql中连续重复记录的最大数量](/upload/InfoBanner/zyjiaocheng/882/eeb12531f59349328a5ec05cdc096144.jpg)
假设有25个程序员组,每组中有5-100个程序员.每组程序员都有编写此问题所指查询的任务.为了响应此任务,每个小组中的许多程序员开始大量饮酒.每个组都有一个库存栏,其中包括:
>威士忌
>伏特加酒
>啤酒
>水
程序员每次喝完酒,都会在表中添加新行,其中包括:
>饮料冲完的时间
>组ID
>程序员编号
>消耗的饮料类型
计划经理希望每六个小时通过电子邮件发送一次列表,列出在过去6个小时内连续喝了5个或更多啤酒,却不喝伏特加/威士忌或一杯水的程序员列表.报告中必须包括每个程序员至少一次不切换到另一种饮料而消耗的啤酒总数.
如果在达到5杯啤酒之前至少消费了一杯啤酒以外的其他饮料,那么该程序员将不会进入列表.
程序员在6小时内可以饮用的饮料数量没有上限或下限.
没有任何程序员可以饮用的饮料类型或顺序的要求.
MySQL数据库有一个表“ drinks”,其中:
> Drinks_id INT(11)PK NN AI
> group_id INT(11)NN
>程序员ID INT(11)NN
> type_of_drink VARCHAR(25)NN
> time_finished DATETIME NN
(饮料的类型可能应该在另一个表中,并且使用了drink_type_id,但是为了简单起见,我在这里)
我要寻找的核心是指定时间段内每个组/程序员组合的type_of_drink =’beer’的连续行数的最大计数值.我已经用尽了我的SQL技巧,试图计算type_of_drink<>在两个记录之间存在的连续记录数. “啤酒”并返回每个组/程序员组合的最大值.我似乎无法正确解决问题,而这也许并不是解决该问题的方法.
提前致谢.如果需要,我将很乐意提供任何其他信息或要求.
解决方法:
SELECT DISTINCT programmer_id
FROM (
SELECT
programmer_id,
@beercounter := IF(@prev_programmer != programmer_id OR type_of_drink != 'beer', 1, @beercounter + 1) AS how_many_beer_in_a_row,
@prev_programmer := programmer_id
FROM
your_table y
, (SELECT @beercounter:=1, @prev_programmer:=NULL) vars
WHERE time_finished >= NOW() - INTERVAL 6 HOUR
ORDER BY programmer_id, time_finished
) sq
WHERE how_many_beer_in_a_row >= 5
内容总结
以上是互联网集市为您收集整理的获取mysql中连续重复记录的最大数量全部内容,希望文章能够帮你解决获取mysql中连续重复记录的最大数量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。