簡體   English   中英

如何在sql中獲得每門課程的學生人數?

[英]How to get number of students per course in sql?

所以我有這3個表:

t_student看起來像這樣:

STUDENT_ID| FIRST_NAME  |LAST_NAME
-----------------------------------
1         |  Ivan       | Petrov
2         |  Ivan       | Ivanov
3         |  Georgi     | Georgiev

t_course看起來像這樣:

course_id |  NAME       |LECTURER_NAME
-----------------------------------
1         |  Basics     | Vasilev
2         |  Photography| Loyns

t_enrolment看起來像這樣:

enrolment_id|   student_fk  |course_fk | Avarage_grade 
-------------------------------------------------------
1           |  1            | 1        |
2           |  3            | 1        |
3           |  4            | 1        |
4           |  2            | 1        | 
5           |  1            | 2        | 5.50
6           |  2            | 2        | 5.40
7           |  5            | 2        | 6.00

我需要制作“選擇”聲明並顯示每門課程的學生人數。 結果應該是:

Count_students | Course_name
-----------------------------
4              | Basics
3              | Photography

從課程表中選擇所有課程,加入注冊表並按課程ID分組。 使用count(),您可以選擇學生人數

    SELECT MAX(t_course.NAME) AS Course_name, COUNT(t_enrolment.student_fk) AS Count_students
    FROM t_course
    LEFT JOIN t_enrolment ON t_enrolment.course_fk = t_course.course_id
    GROUP BY t_course.course_id;

如果您只想在一個課程中選擇同一個學生一次(如果可以進行多次注冊),您可以使用COUNT(DISTINCT t_enrolment.student_fk)

UPDATE

為了使它不僅在mySQL中工作,我在name列中添加了一個聚合函數。

根據您使用的SQL數據庫,您必須添加引號或反引號。

這是你的作業嗎?

select count(*) Count_students, c.name as course_name from t_enrolment e, t_course c group where e.course_fk = c.course_id  by c.name

您需要一個帶有連接到Course_name表的select語句(對於Course_name )。 't_course'.name以使用COUNT(*)函數

這將工作:

SELECT COUNT(*) AS Count_students, c.NAME AS Course_name 
FROM t_enrolment e
JOIN course c
ON e.course_fk = c.course_id
GROUP BY c.NAME

更多信息

計數功能

通過...分組

加入

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM