问题:
编写一个SQL查询,报告所有雇员最多的项目。
Project table:
+-------------+-------------+
| project_id | employee_id |
+-------------+-------------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 4 |
+-------------+-------------+
解法1
解题思路:
使用Having、Group、All
1)使用Group计算统计的每个项目的数值
2)直接使用 HAVING COUNT(*) >= ALL(…) 找出最大值
SELECT
project_id
FROM
Project
GROUP BY project_id
HAVING COUNT(*) >= ALL(
SELECT
COUNT(*)
FROM
Project
GROUP BY project_id
);
解法2 (having)
解题思路:
Group
1)用Group 和Count 找到最大值是多少
2)使用Having,根据最大的数值返回答案
SELECT
project_id
FROM
Project
GROUP BY project_id
HAVING COUNT(*) = (
SELECT
COUNT(*)
FROM
Project
GROUP BY project_id
ORDER BY COUNT(*) DESC
LIMIT 1