力扣580(MySQL)-统计各专业人数(中等)
题目:
一所大学有 2 个数据表,分别是 student 和 department ,这两个表保存着每个专业的学生数据和院系数据。
写一个查询语句,查询 department 表中每个专业的学生人数 (即使没有学生的专业也需列出)。
将你的查询结果按照学生人数降序排列。
如果有两个或两个以上专业有相同的学生数目,将这些部门按照部门名字的字典序从小到大排列。
student 表格如下:
department 表格如下:

示例输入:

解题思路:
方法一:子查询
①我最先想的就是利用子查询,因为题目要求没有学生的专业也需要列出,想到用左或者右连接,Law专业就没有人数,于是我就用右连接连接两个表,以dept_name分组统计出专业人数;
1 SELECT
2 student_name,
3 dept_name,
4 count(distinct a.student_id) as student_number
5 FROM student_580 a
6 RIGHT JOIN department_580 b
7 ON a.dept_id = b.dept_id
8 GROUP BY dept_name;

②从第一步查询出来的临时表中,筛选出dept_name和student_number,并按人数降序排列,如果有不同专业相同人数,则按照部门名字升序排列。
1 SELECT
2 temp.dept_name,
3 temp.student_number
4 FROM
5 ( SELECT
6 student_name,
7 dept_name,
8 count(distinct a.student_id) as student_number
9 FROM student_580 a
10 RIGHT JOIN department_580 b
11 ON a.dept_id = b.dept_id
12 GROUP BY dept_name
13 ) as temp
14 ORDER BY temp.student_number DESC, temp.dept_name ASC;

或者
方法二:不用子查询,直接连接
1 SELECT b.dept_name, count(DISTINCT a.student_id) as student_number
2 FROM student_580 a
3 RIGHT JOIN department_580 b
4 ON a.dept_id = b.dept_id
5 GROUP BY a.dept_id
6 ORDER BY student_number DESC, a.student_name;

力扣580(MySQL)-统计各专业人数(中等)的更多相关文章
- 力扣Leetcode 1248. 统计「优美子数组」
统计「优美子数组」 给你一个整数数组 nums 和一个整数 k. 如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」. 请返回这个数组中「优美子数组」的数目. 示例 ...
- MySQL - 统计每个月生日的人数
Person表定义如下: create table person(id int primary key auto_increment, birthday datetime); Person 数据如下: ...
- 力扣1052. 爱生气的书店老板-C语言实现-中等难度
题目 传送门 文本 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时 ...
- 【Warrior刷题笔记】力扣169. 多数元素 【排序 || 哈希 || 随机算法 || 摩尔投票法】详细注释 不断优化 极致压榨
题目 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/majority-element/ 注意,该题在LC中被标注为easy,所以我们更多应该关 ...
- 力扣567.字符串的排列—C语言实现
题目 来源:力扣(LeetCode)
- 刷题-力扣-113. 路径总和 II
113. 路径总和 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/path-sum-ii 著作权归领扣网络所有.商业转载请联系 ...
- 刷题-力扣-213. 打家劫舍 II
213. 打家劫舍 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/house-robber-ii/ 著作权归领扣网络所有.商业 ...
- 【力扣】82. 删除排序链表中的重复元素 II
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字. 返回同样按升序排列的结果链表. 示例 1: 输入:hea ...
- 力扣---1148. 文章浏览 I
Views 表:+---------------+---------+| Column Name | Type |+---------------+---------+| article_i ...
- 力扣---511. 游戏玩法分析 I
活动表 Activity: +--------------+---------+| Column Name | Type |+--------------+---------+| player ...
随机推荐
- 剑桥英英在线词典 - 可以查单词 可数-不可数 - 英语 a few/few/a little/little
There is _____ milk in a fridge. Let's go buy some. A. a few B. few C. a little D. little 解析:经典老知识点 ...
- Windows逆向之配置虚拟机环境
安装虚拟机环境 首先下载吾爱破解论坛专用版虚拟机软件VMWare Workstation 12,注册成功:再通过虚拟机启动论坛提供的WinXP系统镜像,在我的win11上完美运行. 实现文件互传 为了 ...
- python3中print()函数打印多个变量值
第一种方法: print("变量1", file_name, "变量2", new_name) print("变量1", file_name ...
- Android 获取设备的亮度百分比
一般的屏幕亮度都是0-255,而小米手机的高版本不一样 为了使亮度调节更加细腻, MIUI对原生亮度级别进行了扩展, 由原有的255级调整根据不同屏幕分别支持255/1023/2047/4095级.开 ...
- day34-IO流01
IO流01 1.文件基础知识 什么是文件? 文件,我们并不陌生.文件是保存数据的地方.比如大家经常使用的word文档,txt文件,excel文件等,都是文件.它既可以保存一张图片,也可以保存声音.视频 ...
- MyEclipse设置自动提醒(补全)功能
1. 打开MyEclipse,然后"window"→"Preferences" 2. 选择"java",展开,"Editor&qu ...
- 图像基础概念与YUV/RGB深入理解
目录 一.图像基础概念 1.1 像素 1.2 分辨率 1.2 分辨率-不同分辨率之间的区别 1.3 位深 1.4 帧率 1.4 码率 二.YUV/RGB深入理解 2.1 RGB 2.2 YUV 2.2 ...
- 记录一次报错,程序启动,MySql自动关闭
关于初级程序员,对于安装mysql,以及配置可能会报几次错 有时候虽然进行第二次安装成功,但是第一次的残留文件还在,可能引起报错 在这里记录一次我的报错 程序启动导致Mysql自动断开,需要手动打开 ...
- 记录--Three.js的简单使用,Three.js在vue3.x中导入.pcd三维模型文件
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本文说明 本文主要简单介绍了,在Vue3.x项目中如何简单的使用Three.js,导入PCD三维模型文件. 模型显示 项目实现 第一步 首 ...
- 从零开始的 dbt 入门教程 (dbt cloud 自动化篇)
一.引 在前面的几篇文章中,我们从 dbt core 聊到了 dbt 项目工程化,我相信前几篇文章足够各位数据开发师从零快速入门 dbt 开发,那么到现在我们更迫切需要解决的是如何让数据更新做到定时化 ...