gpt4 book ai didi

mysql - 连接 3 个表,统计一张表中最高的用户数

转载 作者:行者123 更新时间:2023-11-29 16:35:40 25 4
gpt4 key购买 nike

我正在尝试 3 个连接表,以便我可以报告每个客户的调用次数最多的人,请参阅下表

+-------+--+------------+| users |  |            |+-------+--+------------+| id    |  | first name || 1     |  |  Bill      || 2     |  |  Ben       || 3     |  |  Bob       || 4     |  |  Barry     |+-------+--+------------+

第二个表是调用客户表

+-----------+--+-------------------+| customers |  |                   |+-----------+--+-------------------+| id        |  | Company           || 1         |  |  windows company  || 2         |  |  glass company    |+-----------+--+-------------------+

第三个表是通话记录的位置

+-------------+--+--------+--------------+| callrecords |  |        |              |+-------------+--+--------+--------------+| id          |  | userid |   company id || 1           |  |  1     |   1          || 2           |  |  1     |   1          || 3           |  |  1     |   1          || 4           |  |  2     |   1          || 5           |  |  2     |   2          || 6           |  |  2     |    2         |+-------------+--+--------+--------------+

正如您在通话记录表中看到的,公司 id 1(Windows 公司)已经有 4 个调用,但用户 1 调用最多,因此公司我需要显示帐单公司 id 2(玻璃公司)需要显示用户 id 2 是因为他们总共调用了 2 次电话,而不是用户 id 1 因为他们只调用了 1 次电话

所以我需要进行的mysql查询需要循环,所以报告看起来像这样

Windows 公司 - 大多数通话账单玻璃公司 - 最常调用 Ben

最佳答案

如果您想要单个查询来获取记录。您可以检查以下查询。这将为您的每位客户带来最高的通话次数。

SELECT CR.companyid, C.company, U.first_name, COUNT(CR.userid) AS callCount
FROM callrecords AS CR
INNER JOIN customers AS C ON (C.id= CR.companyid)
INNER JOIN users AS U ON (U.id= CR.userid)
GROUP BY C.id,CR.userid HAVING callCount = (
SELECT count(callrecords.userid) as count
FROM callrecords
WHERE callrecords.companyid = CR.companyid
GROUP BY callrecords.userid
ORDER BY count DESC
LIMIT 1
);

忽略表或列名称的拼写,因为相关表或列的名称格式不正确。

关于mysql - 连接 3 个表,统计一张表中最高的用户数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53614400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com