LeetCode刷题-数据库(MySQL)-580. Count Student Number in Department

580. Count Student Number in Department

一、题目描述

A university uses 2 data tables, student and department, to store data about its students and the departments associated with each major.

Write a query to print the respective department name and number of students majoring in each department for all departments in the department table (even ones with no current students).

Sort your results by descending number of students; if two or more departments have the same number of students, then sort those departments alphabetically by department name.

The student is described as follow:

Column Name Type
student_id Integer
student_name String
gender Character
dept_id Integer

where student_id is the student’s ID number, student_name is the student’s name, gender is their gender, and dept_id is the department ID associated with their declared major.

And the department table is described as below:

Column Name Type
dept_id Integer
dept_name String

where dept_id is the department’s ID number and dept_name is the department name.

Here is an example input:
student table:

student_id student_name gender dept_id
1 Jack M 1
2 Jane F 1
3 Mark M 2

department table:

dept_id dept_name
1 Engineering
2 Science
3 Law

The Output should be:

dept_name student_number
Engineering 2
Science 1
Law 0

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-student-number-in-departments
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、思路分析

使用GROUP BY函数将一个部门中的学生进行聚合,然后使用COUNT函数统计每个部门数据的数目。

三、代码实现

SELECT
	dept_name, COUNT(student_id) AS student_number
FROM
	department
		LEFT OUTER JOIN
	student ON department.dept_id = student.dept_id
GROUP BY department.dept_name
ORDER BY student_number DESC, department.dept_name
;

你可能感兴趣的:(MySQL)