使用以下SQL查询,
SELECT Problem.Solver_Assigned_ID, COUNT(Problem.Solver_Assigned_ID)
FROM Problem
WHERE Problem.Solver_Assigned_ID IN (
SELECT Specialist_Category.Specialist_ID
FROM Specialist_Category, Specialist_Category_Name
WHERE Specialist_Category.Category_ID = Specialist_Category_Name.Specialist_Category_ID
AND Specialist_Category_Name.Specialist_Category_Name = "Mouse")
GROUP BY Problem.Solver_Assigned_ID
我正在拿桌子
+-----------------+-----------------------------------+
| Solver assigned | COUNT(Problem.Solver_Assigned_ID) |
+-----------------+-----------------------------------+
| 12 | 2 |
+-----------------+-----------------------------------+
| 17 | 3 |
+-----------------+-----------------------------------+
| 20 | 2 |
+-----------------+-----------------------------------+
我想获得具有最小COUNT(Problem.Solver_Assigned_ID)值的表。
我试过了
SELECT (Problem.Solver_Assigned_ID, MIN(COUNT(Problem.Solver_Assigned_ID)))
FROM (
SELECT Problem.Solver_Assigned_ID, COUNT(Problem.Solver_Assigned_ID)
FROM Problem
WHERE Problem.Solver_Assigned_ID IN (
SELECT Specialist_Category.Specialist_ID
FROM Specialist_Category, Specialist_Category_Name
WHERE Specialist_Category.Category_ID = Specialist_Category_Name.Specialist_Category_ID
AND Specialist_Category_Name.Specialist_Category_Name = "Mouse")
GROUP BY Problem.Solver_Assigned_ID
)
预期结果是
+-----------------+-----------------------------------+
| Solver assigned | COUNT(Problem.Solver_Assigned_ID) |
+-----------------+-----------------------------------+
| 12 | 2 |
+-----------------+-----------------------------------+
| 20 | 2 |
+-----------------+-----------------------------------+
但无济于事。任何帮助,将不胜感激。感谢
答案 0 :(得分:3)
您可以根据子选择的最小值
过滤结果SELECT Problem.Solver_Assigned_ID, COUNT(Problem.Solver_Assigned_ID)
FROM Problem
WHERE Problem.Solver_Assigned_ID IN (
SELECT Specialist_Category.Specialist_ID
FROM Specialist_Category, Specialist_Category_Name
WHERE Specialist_Category.Category_ID = Specialist_Category_Name.Specialist_Category_ID
AND Specialist_Category_Name.Specialist_Category_Name = "Mouse")
GROUP BY Problem.Solver_Assigned_ID
having COUNT(Problem.Solver_Assigned_ID) = (select min(my_count )
from (
SELECT Problem.Solver_Assigned_ID, COUNT(Problem.Solver_Assigned_ID) as my_count
FROM Problem
WHERE Problem.Solver_Assigned_ID IN (
SELECT Specialist_Category.Specialist_ID
FROM Specialist_Category, Specialist_Category_Name
WHERE Specialist_Category.Category_ID = Specialist_Category_Name.Specialist_Category_ID
AND Specialist_Category_Name.Specialist_Category_Name = "Mouse")
GROUP BY Problem.Solver_Assigned_ID ) t1)
答案 1 :(得分:1)
您必须使用您尝试的两个查询进行内部联接,如下所示:
SELECT A.* FROM
(SELECT Problem.Solver_Assigned_ID, COUNT(Problem.Solver_Assigned_ID)
FROM Problem
WHERE Problem.Solver_Assigned_ID IN (
SELECT Specialist_Category.Specialist_ID
FROM Specialist_Category, Specialist_Category_Name
WHERE Specialist_Category.Category_ID = Specialist_Category_Name.Specialist_Category_ID
AND Specialist_Category_Name.Specialist_Category_Name = "Mouse")
GROUP BY Problem.Solver_Assigned_ID) A
INNER JOIN
(SELECT (C.Solver_Assigned_ID, MIN(C.countValue))
FROM (
SELECT Problem.Solver_Assigned_ID, COUNT(Problem.Solver_Assigned_ID) countValue
FROM Problem
WHERE Problem.Solver_Assigned_ID IN (
SELECT Specialist_Category.Specialist_ID
FROM Specialist_Category, Specialist_Category_Name
WHERE Specialist_Category.Category_ID =
Specialist_Category_Name.Specialist_Category_ID
AND Specialist_Category_Name.Specialist_Category_Name = "Mouse")
GROUP BY Problem.Solver_Assigned_ID
) C GROUP BY C.Solver_Assigned_ID) B
ON A.Solver_Assigned_ID=B.Solver_Assigned_ID;