一所大學有 2 個數據表,分別是?student?和?department?,這兩個表保存著每個專業的學生數據和院系數據。
寫一個查詢語句,查詢?department?表中每個專業的學生人數 (即使沒有學生的專業也需列出)。
將你的查詢結果按照學生人數降序排列。 如果有兩個或兩個以上專業有相同的學生數目,將這些部門按照部門名字的字典序從小到大排列。
student 表格如下:
| Column Name ?| Type ? ? ?|
|--------------|-----------|
| student_id ? | Integer ? |
| student_name | String ? ?|
| gender ? ? ? | Character |
| dept_id ? ? ?| Integer ? |
其中, student_id 是學生的學號, student_name 是學生的姓名, gender 是學生的性別, dept_id 是學生所屬專業的專業編號。
department 表格如下:
| Column Name | Type ? ?|
|-------------|---------|
| dept_id ? ? | Integer |
| dept_name ? | String ?|
dept_id 是專業編號, dept_name 是專業名字。
這里是一個示例輸入:
student?表格:
| student_id | student_name | gender | dept_id |
|------------|--------------|--------|---------|
| 1 ? ? ? ? ?| Jack ? ? ? ? | M ? ? ?| 1 ? ? ? |
| 2 ? ? ? ? ?| Jane ? ? ? ? | F ? ? ?| 1 ? ? ? |
| 3 ? ? ? ? ?| Mark ? ? ? ? | M ? ? ?| 2 ? ? ? |
department 表格:
| dept_id | dept_name ? |
|---------|-------------|
| 1 ? ? ? | Engineering |
| 2 ? ? ? | Science ? ? |
| 3 ? ? ? | Law ? ? ? ? |
示例輸出為:
| dept_name ? | student_number |
|-------------|----------------|
| Engineering | 2 ? ? ? ? ? ? ?|
| Science ? ? | 1 ? ? ? ? ? ? ?|
| Law ? ? ? ? | 0 ? ? ? ? ? ? ?|
思路:嵌套查詢出每一個專業學習人數,然后排序。
select a.dept_name as 'dept_name',(select count(*) from student as b where b.dept_id=a.dept_id) as 'student_number'
from department as a
order by student_number desc,dept_name;
?