假设有两个表:学生表(students)和部门表(departments),学生表中包含学生的姓名和所属部门ID,部门表中包含部门的ID和名称。
首先,需要按照部门分组,并计算每个部门的学生数量。然后,将学生表和部门表进行联接,根据学生数量进行排序,最后选择前三名学生。
下面是一个示例的SQL代码:
SELECT s.name, d.department_name
FROM (
SELECT s.department_id, COUNT(*) as student_count
FROM students s
GROUP BY s.department_id
) as sc
JOIN students s ON s.department_id = sc.department_id
JOIN departments d ON d.department_id = sc.department_id
ORDER BY sc.student_count DESC
LIMIT 3;
这个SQL查询首先计算出每个部门的学生数量,并命名为student_count。然后,将学生表(students)和部门表(departments)与这个计算结果进行联接,根据学生数量进行降序排序。最后,使用LIMIT 3选择前三名学生。
请根据你的实际表结构和字段名称,进行适当的调整。