sql:仅显示最大计数 (php)
sql: show only the max count (php)
我一直在浏览各种示例,但似乎无法获得正确答案。我想在这里得到的是显示:
staffID,名称来自 Table 员工
总号员工从 StaffWorksInTask 参与的任务数
(仅限参与任务最多的员工)
职员:staffID、姓名
StaffWorksInTask:员工 ID、任务 ID、项目 ID
我第一步做的是忽略过滤器部分:
SELECT COUNT(W.staffID), S.staffID, S.name
FROM Staff S, StaffWorksInTask W
WHERE S.staffID = W.staffID
GROUP BY W.staffID
但现在我完全坚持可以让列表只显示涉及最多任务的员工的条件(这样,其他员工就不会显示)。
请帮忙!!非常感谢!!
正如@jarlh 所说,您已经从后到前进行了分组。
SELECT TOP 1 COUNT(W.staffID) as c, S.staffID, S.name
FROM Staff S, StaffWorksInTask W
WHERE S.staffID = W.staffID
GROUP BY S.staffID, S.name
ORDER BY c DESC
准确的语法可能有所不同 - 您没有指定您使用的是哪个数据库平台。
您需要限制结果
SELECT COUNT(W.staffID) as total, S.staffID, S.name FROM Staff S, StaffWorksInTask WHERE S.staffID = W.staffID GROUP BY S.name,S.staffID ORDER BY total DESC LIMIT 1
据我了解,您只想查看一个最高结果吗?
你可以这样做:
SELECT COUNT(W.staffID) as counter, S.staffID, S.name
FROM Staff S, StaffWorksInTask W
WHERE S.staffID = W.staffID
GROUP BY S.staffID
ORDER BY counter DESC
LIMIT 0, 1
这将只显示一名工作人员 - 任务最多的人
ORDER BY
子句按任务数降序排列结果,
LIMIT
子句确保您只看到 1 个结果(从第 0 行开始)
我一直在浏览各种示例,但似乎无法获得正确答案。我想在这里得到的是显示: staffID,名称来自 Table 员工 总号员工从 StaffWorksInTask 参与的任务数 (仅限参与任务最多的员工)
职员:staffID、姓名
StaffWorksInTask:员工 ID、任务 ID、项目 ID
我第一步做的是忽略过滤器部分:
SELECT COUNT(W.staffID), S.staffID, S.name
FROM Staff S, StaffWorksInTask W
WHERE S.staffID = W.staffID
GROUP BY W.staffID
但现在我完全坚持可以让列表只显示涉及最多任务的员工的条件(这样,其他员工就不会显示)。 请帮忙!!非常感谢!!
正如@jarlh 所说,您已经从后到前进行了分组。
SELECT TOP 1 COUNT(W.staffID) as c, S.staffID, S.name
FROM Staff S, StaffWorksInTask W
WHERE S.staffID = W.staffID
GROUP BY S.staffID, S.name
ORDER BY c DESC
准确的语法可能有所不同 - 您没有指定您使用的是哪个数据库平台。
您需要限制结果
SELECT COUNT(W.staffID) as total, S.staffID, S.name FROM Staff S, StaffWorksInTask WHERE S.staffID = W.staffID GROUP BY S.name,S.staffID ORDER BY total DESC LIMIT 1
据我了解,您只想查看一个最高结果吗?
你可以这样做:
SELECT COUNT(W.staffID) as counter, S.staffID, S.name
FROM Staff S, StaffWorksInTask W
WHERE S.staffID = W.staffID
GROUP BY S.staffID
ORDER BY counter DESC
LIMIT 0, 1
这将只显示一名工作人员 - 任务最多的人
ORDER BY
子句按任务数降序排列结果,
LIMIT
子句确保您只看到 1 个结果(从第 0 行开始)