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