gpt4 book ai didi

mysql - 如何 JOIN 两个表,然后使用 CASE 表达式来确定它们的 ORDER BY 方式? SQL

转载 作者:行者123 更新时间:2023-11-29 15:40:32 25 4
gpt4 key购买 nike

考虑以下架构:

CREATE TABLE Students (
student_id int,
student_name varchar(255),
gender varchar(255),
dept_id int
);

CREATE TABLE Departments (
dept_id int,
dept_name varchar(255),
);

我的目标是建立一个表格,显示每个科目注册的学生人数 - 按学生人数降序排列......

到目前为止,我有一个查询可以做到这一点:

SELECT
dept_name, count(*) as 'number_of_students'
FROM
Students
JOIN
Departments on students.dept_id=Departments.dept_id
GROUP BY
dept_name
ORDER BY
dept_name

并得到以下结果:


dept_name number_of_students
--------- ----------
History 1
English 2
Math 2
Science 3

这就是我想要的......但是,我需要包含一个案例,该案例将根据两个或更多部门是否有相同数量的学生来更改顺序......

如果 2 个或更多部门有相同数量的学生,则结果表需要按字母顺序排序,因此应如下所示:

dept_name       number_of_students
--------- ----------
English 2
History 1
Math 2
Science 3

我的 SQL 知识到这里就结束了..我大概知道应该如何做到这一点..也许可以使用 CASE 语句?但不确定如何或在哪里放置它以及如何比较 number_of_students 列中的两个后续值,然后据此做出决定?

非常感谢任何帮助或建议!

最佳答案

SELECT
dept_name, count(*) as 'number_of_students'
FROM
Student
JOIN
Departments on student.dept_id=Departments.dept_id
GROUP BY
dept_name
ORDER BY
(CASE WHEN number_of_students = number_of_students THEN dept_name ELSE number_of_students
END)

我解决了

关于mysql - 如何 JOIN 两个表,然后使用 CASE 表达式来确定它们的 ORDER BY 方式? SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57718483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com