用于确定具有特定数据的最大连续会话的查询或过程

时间:2015-06-01 22:34:03

标签: php mysql sql

我遇到了一个挑战,我发现了一些接近的解决方案,但是还没有完全解决它(我已经根据这个问题的解决方案开展了一些工作: Check for x consecutive days - given timestamps in database)。

基本上,我有团队进行演习。每个团队有多个成员,一个人可以在多个团队中。我们有不同级别的演习。有些钻机每天都在运行,有些钻机每天都没有运行,有些钻机每天运行多次。我的任务是为每个团队成员计算每个钻取级别的连续成功会话。

此表跟踪所有会话:

CREATE TABLE IF NOT EXISTS `readiness_sessions` (
  `readiness_sessions_id` int(11) NOT NULL AUTO_INCREMENT,
  `session_initiation_time` datetime DEFAULT NULL,
  `session_level` varchar(3) DEFAULT NULL,
  `session_type` varchar(3) DEFAULT NULL)

三个会议:

INSERT INTO readiness_sessions
(session_initiation_time, session_level, session_type)
VALUES
('2015-05-30 15:00:00', '1', '1'),
('2015-06-01 12:15:00', '2', '1'),
('2015-06-01 15:00:00', '1', '1')

对于每个创建的会话,将为符合钻取会话资格的每个团队创建下表中的记录:

CREATE TABLE IF NOT EXISTS `readiness_team_checkins` (
  `readiness_team_checkins_id` int(11) NOT NULL AUTO_INCREMENT,
  `readiness_sessions_id` int(11) NOT NULL,
  `team_id` int(11) NOT NULL)

某些团队签到(此表中有其他数据,但与当前挑战无关):

INSERT INTO readiness_team_checkins
(readiness_sessions_id, team_id)
VALUES
(1,1), (1,2), (1,3), 
(2,1), (2,2), 
(3,1), (3,2), (3,3)

对于每个团队的每个成员,在此表中创建一条记录:

CREATE TABLE IF NOT EXISTS `readiness_team_member_checkins` (
  `readiness_team_member_checkins_id` int(11) NOT NULL AUTO_INCREMENT,
  `readiness_sessions_id` int(11) NOT NULL,
  `readiness_team_checkins_id` int(11) NOT NULL,
  `team_member_id` int(11) NOT NULL,
  `status` enum('U','D','O','M','F','X') DEFAULT NULL)

一些团队成员签到数据:

INSERT INTO readiness_team_team_member_checkins
(readiness_sessions_id, readiness_team_checkins_id, team_member_id, status)
VALUES
(1, 1, 1, 'U'), (1, 1, 2, 'M'), (1, 1, 3, 'U'), 
(1, 2, 4, 'U'), (1, 2, 5, 'U'), (1, 2, 6, 'U'), 
(2, 1, 1, 'U'), (2, 1, 2, 'U'), (2, 1, 3, 'U'),
(2, 2, 4, 'O'), (2, 2, 5, 'M'), (2, 2, 6, 'U'),
(3, 1, 1, 'U'), (3, 1, 2, 'U'), (3, 1, 3, 'U'),
(3, 2, 4, 'M'), (3, 2, 5, 'M'), (3, 2, 6, 'U')

此表格更新为'状态'该成员。在基础级别,我想找到哪些团队成员已完成15,30,60等连续会话,其状态为“U'并找到每个成员的最大数量。

使用所包含的数据样本,我希望能够看到以下内容,例如:团队成员1将有2个连续成功的1级练习,1个成功的2级练习。这些将被单独查询。

我目前正在处理现有数据。我可以修改表格以简化前进,但我还需要能够将其从现有数据集中拉出来。

有没有办法可以运行单个查询来查看,例如,team_member_id X是否有连续15次成功钻取session_level Z的效率?我还没有能够提出任何与我认为我需要的多个连接一起工作的东西。

非常感谢任何帮助!

0 个答案:

没有答案