我有一个查询问题。 我有一张做事的代理商表格。 我在事件表中跟踪他们所做的事情。 我想让座席忙,但不要太忙,因此我需要一个查询,该查询将返回一组座席,这些座席在过去10分钟内执行的事件不超过10个,在过去24小时内执行的事件不超过400个。 从这个可用的代理商库中,我可以选择一个来做某事

所以我的代理表如下所示:

Agent table
AgentID.       AgentName
1                    Bob
2                    Sue

Event Table

Event ID.     Agent ID.    Event Timestamp
1                  2        1319525462
2                  1        1319525462
3                  2        1319525462

显然,这些表只是为了提供db的形式。 我通常需要但无法弄清楚的是如何从联接中选择一组代理,该联接返回过去10分钟内完成不超过10个事件且在过去10分钟内不超过400个事件的一组代理过去24小时。 我的实际表比较复杂,但我只是在寻找有关如何构造可返回所需结果的查询的一般原则。 提前感谢您的帮助!

**基于Benoit的应答更新,我想到了这个:

SELECT DISTINCT username FROM campaign_agents 
LEFT OUTER JOIN (SELECT count(event_index) myevents, field_event_agent_value FROM new_event WHERE field_event_time_value BETWEEN 1320206138 AND 1320292538 GROUP BY field_event_agent_value ) last_24_hours 
ON last_24_hours.field_event_agent_value = campaign_agents.username 
LEFT OUTER JOIN (SELECT count(event_index) myevents, field_event_agent_value FROM new_event WHERE field_event_time_value BETWEEN 1320291938 AND 1320292538 GROUP BY field_event_agent_value ) last_10_mins 
ON last_10_mins.field_event_agent_value = campaign_agents.username 
WHERE last_24_hours.myevents < 550 AND last_10_mins.myevents < 10

但这不会使Campaign_agents表中的代理商尚未执行任何操作,因此不在事件表中。 即使没有第二个表的匹配项,LEFT OUTER JOIN也不应该在第一个表中包括campaign_agents中的所有内容吗? 我需要在哪里以某种方式将它们包括在内之后放入和或语句吗?

===============>>#1 票数:0 已采纳

你可以试试:

SELECT agent.agentid
  FROM agent
 INNER JOIN (SELECT count(eventid) events, agentid
               FROM event
              WHERE timestamp BETWEEN /* (now - 24 hours) */ AND /* now */ -- adapt this
              GROUP BY agentid
            ) last_24_hours
    ON last_24_hours.agentid = agent.agentid
 INNER JOIN (SELECT count(eventid) events, agentid
               FROM event
              WHERE timestamp BETWEEN /* (now - 10 minutes) */ AND /* now */ -- adapt this
              GROUP BY agentid
            ) last_10_mins
    ON last_10_mins.agentid = agent.agentid
WHERE last_24_hours.events < 400
  AND last_10_mins.events < 10

  ask by vaene translate from so

未解决问题?本站智能推荐:

4回复

MySQL查询对

如何选择尚未与“阿尔法”配对的所有球员? (输出=“伽马”)。 即使pairs表为空,它也应该工作。 我已经奋斗了几个小时。 例如,如果我这样做 输出为“ beta”和“ gamma”。 在联接中,“ beta”出现两次(每个与“ alpha”和“ gamma”配对一次)
1回复

mysql查询结果

我已经建立了这种自我解释的查询: 在事件表中,我有6个事件,但此查询仅返回其中3个(ID:1、2、4)。 该查询在哪里出错?
4回复

MySQL中的查询

我想获取所有时薪为17.5的员工,项目名称为HR System。 我尝试使用以下查询获取语法错误。 我在哪里做错了?
2回复

mysql查询查询

我知道这是一个愚蠢的问题,但是我是php的新手,所以任何帮助都是有用的。 我有两个表格, product和payment : 产品表具有Id , Room_Available , price ,... 付款表具有Id , Product_Id , Total_Room ,
3回复

MySQL查询与子查询

我在尝试进行简单查询时遇到麻烦。 我的表是: 用户 讯息 我需要获取来自SEPECIFIC用户的所有消息(知道他的用户名)。 但是我还需要获取接收者和发送者的用户名。 我用了 这可行,但是现在我需要他们的用户名,所以我想到了类似的东西: 但这并没有
3回复

在MySQL中选择查询

两张桌子 表格1 表2 我需要通过传递table1的任何ID来获取isDeleted = 1的文件名计数,即对于ID的所有value(1,2,3),我需要将计数设为2 我尝试了以下查询 这总是返回3。 编辑:我需要通过传递来自第一个表的ID从第一个表中获
1回复

MySQL中的分层查询

具有该表结构和数据: 有没有办法得到这样的结果: 如您所见,我真正想要的是每条记录,如果有父记录(P),祖父母记录(G)等记录(递归可以进行4个级别或任何其他已知的有限数),则字段的祖先(可以在查询外部以编程方式发生)和SUM(或任何其他GROUP函数)也以递归方式计算值。
2回复

更好的MySQL查询?

这是一个示例,我有一个Car,User,Member和Dealer表。 目前,我正在尝试通过匹配其用户名来获得拥有汽车的经销商的名称 这是我想要的,但是我不禁感到有更好的方法呢? 当前,Car中的用户ID是Dealer中用户ID的FK,这是Member中用户ID的FK,Member是
1回复

mysql查询3张表

我搞砸了对3个表的mysql查询,我只是无法正常工作。 情况:我有3张桌子。 现在,我尝试基于输入字段进行mysql查询,在该字段中,我从“ oxarticles”表中放入“ oxid”,结果应该是,我从article / oxid是该类别的类别中获取了所有文章。放在输入字段中。
1回复

MySQL联接和查询

我想编写一个从两个或三个表中提取信息的查询。 它的结构使表具有共同的clientid 。 我想将该clientid转换为client name ,该client name存储在另一列中。 一张桌子列出了我的客户( clients ),它有一列名为clientid和name的列(表示