繁体   English   中英

我是mysql查询的新手,我想加入这四个表,计算属于每个学校的学生人数并按学校名称分组

[英]am new to mysql queries, i want to join these four tables, count the number of students who belong to each school and group them by school name

我是 mysql 查询的新手,我想加入这四个表我想计算属于每所学校的学生人数并按学校名称对他们进行分组。

然后我想找到每所学校的男女学生人数注意:考虑到表格中有实际数据

这是我正在尝试做的,但没有给出实际结果

 SELECT COUNT(studentid) AS totalStudentsRegistered,
        s.schoolid,s.schoolName
   FROM student s,course c,program p,school s
  WHERE s.cousreid = c.courseid
    AND c.programid= p.programid
    AND p.schoolid= s.schoolid
  GROUP BY s.schoolName

-----------------
   table A (student)
-------------------------------------------------------------
   studentid       | Name     | age    | gender   |courseid
-------------------------------------------------------------
    1              | joe goe  | 23     |male      |1
    2              |sands sou | 20     |female    |2
    3              |marry goe | 23     |male      |1
    4              |jane mand | 20     |female    |2
-------------------------------------------------

table b  (courses)
-------------------------------------------------------------
   courseid        | couseName     | programid
-------------------------------------------------------------
    1              | Math          | 1    
    2              | science       | 2 
-------------------------------------------------------------
 table c (programs)
-------------------------------------------------------------
   programid       | programName        | schoolid
-------------------------------------------------------------
    1              | Degree             | 1    
    2              | Diploma            | 2 
-------------------------------------------------------------
 table c (school)
-------------------------------------
  schoolid         | schoolname     
-------------------------------------
    1              | school of math           
    2              | school of scince        
-------------------------------------

您可以使用这样的查询

SELECT sc.schoolid, sc.schoolName,
       COUNT(st.studentid) AS totalStudentsRegistered,
       SUM(st.gender = 'male') AS totalmalestudent,
       SUM(st.gender = 'female') AS totalfemalestudent 
  FROM student st
  JOIN courses c ON st.courseid = c.courseid
  JOIN programs p ON c.programid = p.programid
  JOIN school sc ON p.schoolid = sc.schoolid
 GROUP BY sc.schoolid, sc.schoolName

在哪里

  • 将所有非聚合列添加到 GROUP BY 列表中
  • 在表之间使用显式 JOIN 语法而不是逗号分隔的旧语法。
  • 这里使用了默认的 JOIN(INNER)。 根据 JOIN 条件中的 ID 列可能不匹配的数据,这可能会被 LEFT JOIN 替换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM