无法在 SQL 子查询中获取 N 个不同的记录

Unable to get N distinct records in SQL subquery

我试图让下面的 SQL 查询中的每个 AgentName 只出现 2 次:-

SELECT j1.AgentName,
         j1.LatencyCount,
         j2.callid,
         j2.jittermax,
         j2.agentid
FROM 
    (SELECT agentname AS AgentName,
         count(agentid) AS LatencyCount
    FROM metals.client_logs_quality_monitor
    WHERE partition_0 >= '2019-09-23'
            AND CallTime > 1569222000
            AND CallTime <= 1569250399
    GROUP BY  agentname
    ORDER BY  LatencyCount DESC LIMIT 5 ) j1,metals.client_logs_quality_monitor j2
WHERE partition_0 >= '2019-09-23'
        AND j2.CallTime > 1569222000
        AND j2.CallTime <= 1569250399
        AND j1.AgentName = j2.agentname
ORDER BY  j1.AgentName DESC, jittermax DESC

目前,我的输出低于:-

但我希望它像下面这样(每个代理只有 2 条记录):-

我找不到任何方法来做到这一点。如果您有任何建议,请告诉我。另外,如果您可以建议对现有查询进行任何修改,请告诉我,因为我希望它扫描最少的记录。

您可以使用 row_number():

SELECT j1.AgentName, j1.LatencyCount,
       j2.callid, j2.jittermax, j2.agentid
FROM (SELECT agentname AS AgentName,
             count(agentid) AS LatencyCount
      FROM metals.client_logs_quality_monitor
      WHERE partition_0 >= '2019-09-23' AND
            CallTime > 1569222000 AND
            CallTime <= 1569250399
      GROUP BY agentname
      ORDER BY LatencyCount DESC
      LIMIT 5
     ) j1 JOIN
     (SELECT j2.*,
             ROW_NUMBER() OVER (PARTITION BY AgentName ORDER BY callid) as seqnum
      FROM metals.client_logs_quality_monitor j2
     ) j2
     ON j1.AgentName = j2.agentname
WHERE partition_0 >= '2019-09-23' AND
      j2.CallTime > 1569222000 AND
      j2.CallTime <= 1569250399 AND
      seqnum <= 2 
ORDER BY  j1.AgentName DESC, jittermax DESC;