gpt4 book ai didi

mysql - 如何在 MYSQL 中对 2 个表使用 MAX 和 COUNT 函数

转载 作者:行者123 更新时间:2023-11-29 22:26:54 24 4
gpt4 key购买 nike

我是 MYSQL 的新手,有一个关于在 MYSQL 中同时使用 MAX 和 COUNT 函数的问题。我有2个表worker和分配表,worker的主键是分配表中的外键。

我需要显示员工的姓名和 ID 以及分配给他的总分配,并且只显示分配最多的人员,即分配最多的员工。

我的代码是

SELECT worker.Wrk_ID, worker.Wrk_LastName, MAX(a.count_id)
FROM worker,
(SELECT COUNT(assignment.Wrk_ID) as count_ID
FROM worker, assignment
WHERE worker.Wrk_ID = assignment.Wrk_ID
GROUP BY worker.Wrk_ID)as a
GROUP BY worker.Wrk_ID;

代码给出错误号。 #1054.

请谁能帮助我。

感谢您的期待。

最佳答案

尝试这样的事情:

SELECT worker.Wrk_ID, worker.Wrk_LastName, S.Count
FROM worker
JOIN
(SELECT Wrk_ID, COUNT(*) AS Count FROM Assignments
GROUP BY Wrk_Id ORDER BY COUNT(*) DESC LIMIT 1) S
ON worker.Wrk_ID = S.Wrk_ID

如果您想要按总任务排序的员工列表:

SELECT w.WrkID, w.Wrk_LastName, COUNT(*) AS Assignments
FROM work w left join Assignments a
ON w.WrkID=a.WrkID
GROUP BY w.WrkID
ORDER BY COUNT(*) DESC;

允许多个获奖者:

SELECT s.*, w.Wrk_Lastname FROM 
(
SELECT wrk_id , COUNT(*) AS tot_assignments
FROM Assignments
GROUP BY wrk_id
HAVING COUNT(*) =
(
SELECT MAX(tot) FROM
(
SELECT COUNT(*) AS TOT FROM Assignments GROUP BY wrk_id
) counts
)
) winners
INNER JOIN worker w ON s.wrk_id = w.wrk_id;

它可能会很慢,因为它执行多个 GROUP BY。在一个过程中分步骤进行可能会更好。

关于mysql - 如何在 MYSQL 中对 2 个表使用 MAX 和 COUNT 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30201582/

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