Mysql 如何编写查询以根据需要查找结果

Mysql 如何编写查询以根据需要查找结果,mysql,Mysql,此表是我的sip服务器的呼叫详细记录。每个调用在数据库中创建2行,每个调用的linkedid都相同 我想找出端口=201和linkedid相等的总和(billsec)。结果应与端口201的总和(billsec)相似,应为(22+61)=82 现在请帮助我编写查询。首先获取linkedid(子查询)的最大值,然后求和,其中port=201 sl accountcode billsec port disposition linkedid dcontext 1

此表是我的sip服务器的呼叫详细记录。每个调用在数据库中创建2行,每个调用的linkedid都相同

我想找出端口=201和linkedid相等的总和(billsec)。结果应与端口201的总和(billsec)相似,应为(22+61)=82


现在请帮助我编写查询。

首先获取linkedid(子查询)的最大值,然后求和,其中port=201

sl  accountcode  billsec    port  disposition   linkedid           dcontext
1   9763719771    0         208    ANSWERED     1563550244.51394    from_a
2   9763719771    22               ANSWERED     1563550244.51394    a2
3   4739619421    0         201    ANSWERED     1563550304.51402    from_a
4   4739619421    21               ANSWERED     1563550304.51402    a2
5   4020885986    0         714    ANSWERED     1563550991.51453    from_a
6   4020885986    39               ANSWERED     1563550991.51453    a2
7   8743098677    0         208    NO ANSWER    1563550501.51417    from_a
8   8743098677    0                NO ANSWER    1563550501.51417    a2
9   9763719771    0         201    ANSWERED     1563551117.51476    from_a
10  9763719771    61               ANSWERED     1563551117.51476    a2
SELECT 
    linkedid
    ,SUM(billsec) AS SUM_RESULT
FROM TABLE
WHERE port = 201 OR port = ''
GROUP BY linkedid;

在端口201上是0+0否?正如我提到的,一次调用创建了两行,因此端口201的第3行和第4行以及第9行和第10行表示201。此查询结果将是0,但我希望第3行、第4行、第9行和第10行对总和进行锁定,因为第4行和第10行没有端口201,并且具有不同的LinkedYes第4行和第10行没有端口,但是第3行和第4行linkedid相同,并且都表示201那么你应该编辑你的问题。这是误导。我正在编辑我的答案。它成功了。非常感谢你。关于这一点的另一个问题是为什么我必须找出linkedid的最大值您(似乎)每个linkedid有2行1包含端口另一个billsec查找最大值并按linkedid分组将创建一行两个值。(如果您愿意,可以独立运行子查询)再次感谢。在我看来,这是我自己永远也找不到的。你在这方面做得很好。
select sum(maxbillsec) billsec
from
(
select linkedid,max(billsec) maxbillsec,max(port) maxport
from t 
group  by linkedid
) s 
where maxport = 201
; 

+---------+
| billsec |
+---------+
|      82 |
+---------+
1 row in set (0.00 sec)