mysql - 内连接表后的性别计数

标签 mysql sql count

我使用以下代码内部连接了三个表 CC、学生和教师:

SELECT  CC.Course_number , CC.Expression, teachers.Lastfirst, students.gender, teachers.sched_department
From CC
inner join students  ON CC.StudentID=students.ID
inner join teachers  ON CC.TeacherID=Teachers.ID
Where CC.SchoolID=151 and CC.TermID=2401
Order by teachers.sched_department, CC.course_number,  Teachers.Lastfirst, CC.Expression, students.gender

代码有效,我得到一个列表,其中包括类(class)代码、类(class)周期、教师姓名、部门和性别。

但是我希望的输出是压缩格式,如下所示:

类(class)号(一次)来自 CC 表,类(class)表达式 来自 CC 表,教师 来自教师表,部门 code> 来自教师表,男性(计入该特定类(class))来自学生表,女性(计入该特定类(class))来自学生表。

我最后尝试的代码是这样的:

SELECT
CC.Course_number , CC.Expression, teachers.Lastfirst, teachers.sched_department, male_cnt, female_cnt
From CC
inner join teachers 
ON CC.TeacherID = Teachers.ID
inner join (Select students.ID, count(case when students.gender= 'M' then students.ID end) as male_cnt, count(case when students.gender= 'F' then students.ID end) as female_cnt
From Students
Where
students.SchoolID=151
Group By students.ID) 
ON CC.StudentID=students.ID
Where CC.SchoolID=151 and CC.TermID=2401
Order By 
teachers.sched_department, CC.course_number,  Teachers.Lastfirst, CC.Expression

任何建议都会很棒。

最佳答案

在不知道表结构和示例输入/输出数据的情况下,很难准确说出您在寻找什么,但也许这就是您想要的?如果不是,请澄清您的要求并添加示例数据。

SELECT 
    CC.Course_number, 
    CC.Expression, 
    Teachers.Lastfirst, 
    Teachers.sched_department, 
    SUM(students.gender = 'male') AS males,
    SUM(students.gender = 'female') AS females
FROM CC
INNER JOIN Students ON CC.StudentID = students.ID
INNER JOIN Teachers ON CC.TeacherID = Teachers.ID
WHERE CC.SchoolID = 151 and CC.TermID = 2401
GROUP BY 
  CC.Course_number, 
  CC.Expression, 
  Teachers.Lastfirst, 
  Teachers.sched_department
ORDER BY 
  teachers.sched_department, 
  CC.course_number, 
  Teachers.Lastfirst, 
  CC.Expression

Sample SQL Fiddle (对表结构有很多假设......)

关于mysql - 内连接表后的性别计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26033886/

相关文章:

PHP:无法让 Oracle 表显示在页面上

java - 无法删除记录

mysql - Redmine 与 SQL Server 2008 R2

sql - Postgres : create function in a particular database

mysql - SQL 设置 ORDER BY

mysql - 这个简单的 MySQL SELECT 查询有什么问题?

linux - 如何使用 bash 在命令行上计算日期范围内的特定文件数?

MySQL获取root路径

mysql - 3 个表的 SQL 计数

Unix 控制台 : Count distinct exceptions (not known beforehand)