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

标签 mysql max

我是 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/

相关文章:

python - 从 pandas 中特定列的 DF 中提取最大值、最小值或标准差

sorting - Pandas:按最大值对列进行排序

php - 时间戳困惑 : solution for concurrency issue

mysql - 将脚本从 MySQL 4.0 迁移到 4.1

mysql(innodb)外键约束问题

php - 在 Zend Framework 2 中访问 MySQL 存储过程输出

java - 求三个整数中的最大值

mysql - 分钟后使 bin 登录过期

r - 找到至少由 N 分隔的数字的最大子集的最佳方法是什么?

octave - GNU Octave 音程 : How to find n maximum elements of a vector