【问题标题】:Moodle SQL number of studentsMoodle SQL 学生人数
【发布时间】:2023-02-04 17:46:50
【问题描述】:

我不是真正的 SQL 导出,到目前为止我发现了这段代码,它列出了按课程分组的学生(注册)人数。我想要一个开始日期和结束日期,所以我想要的是我将开始日期设置为 2022/04/05 和结束日期 2022/04/09,并且代码应该列出参加课程的学生人数在这个特定范围内。到目前为止我找到了这段代码。

SELECT c.fullname, COUNT(ue.id) AS Enroled

FROM prefix_course AS c 

JOIN prefix_enrol AS en ON en.courseid = c.id

JOIN prefix_user_enrolments AS ue ON ue.enrolid = en.id

GROUP BY c.id

ORDER BY c.fullname

我知道我必须以某种方式添加 %starttime% 和 %endtime% 才能选择两个日期,但我不知道如何添加。

【问题讨论】:

    标签: moodle


    【解决方案1】:
    SELECT c.id, c.fullname, COUNT(*)
    FROM mdl_course c
    JOIN (
        SELECT DISTINCT e.courseid, ue.userid /* Distinct because one user can be enrolled multiple times */
        FROM mdl_enrol e
        JOIN mdl_user_enrolments ue ON ue.enrolid = e.id AND ue.timestart BETWEEN :starttime AND :endtime
    ) students ON students.courseid = c.id
    GROUP BY c.id, c.fullname
    

    登记的时间存储在mdl_user_enrolments.timestart

    一门课程可以有多种注册方法,并且一个学生可以使用不同的方法多次注册一门课程。所以你需要给我们一个不同的连接。

    您可能还想添加一些额外的过滤器。例如:

    检查用户没有被暂停

    JOIN mdl_user u ON u.id = ue.userid AND u.suspended = 0
    

    用户注册有效

    AND ue.status = 0 /* ENROL_USER_ACTIVE */
    

    报名方式有效

    AND e.status = 0 /* ENROL_INSTANCE_ENABLED */
    

    【讨论】:

      【解决方案2】:

      但它显示老师是学生人数,它是参加者名单,我怀疑只有学生人数

      【讨论】:

        猜你喜欢
        • 2022-11-03
        • 2020-02-03
        • 1970-01-01
        • 1970-01-01
        • 2017-11-22
        • 2020-08-08
        • 1970-01-01
        • 2022-09-23
        • 1970-01-01
        相关资源
        最近更新 更多