2012-04-30 2 views
1

Возможно ли выполнить подсчет на основе комбинации двух столбцов?COUNT с использованием двух (или более) столбцов

У меня есть 3 таблицы:

студент: Student id | Student name | Gender | Dob |

Класс регистра: Student id | Class id

Обе колонны составляют составной первичный ключ.

Классы: Class id | Class name | Class day

Я хотел бы выполнить подсчет количества студентов каждого пола в каждом классе.

Я придумал этот запрос до сих пор:

SELECT class_name AS 'class Name', 
    Child_gender AS 'Gender', 
    COUNT(student_id) AS 'Count' 
FROM student,classRegister,classes 
WHERE student.student_id=classRegister.student_id AND 
    classRegister.class_id=classes.class_id 
GROUP BY class_name,student_gender 
ORDER BY class_name; 

Но это, кажется, дает мне продублировать результаты для некоторых студентов.

Итак, могу ли я изменить этот запрос, чтобы подсчитать количество экземпляров комбинации student_id и class_id?

Я еще новичок в MySQL, поэтому я прошу прощения, если это является основным для всех

ответ

1

Попробуйте это:

SELECT c.class_name AS 'class Name', s.Child_gender AS 'Gender', 
     COUNT(s.student_id) AS 'Count' 
FROM student s 
INNER JOIN classRegister cr ON s.student_id = cr.student_id 
INNER JOIN classes c ON cr.class_id = c.class_id 
GROUP BY s.Child_gender, s.class_id, c.class_name 
ORDER BY c.class_name 
0
SELECT c.class_name AS 'class Name', s.Child_gender AS 'Gender', 
     COUNT(DISTINCT s.student_id) AS 'Count' 
FROM student s 
INNER JOIN classRegister cr ON s.student_id = cr.student_id 
INNER JOIN classes c ON cr.class_id = c.class_id 
GROUP BY c.class_name, s.Child_gender 

Вы можете получать тот же студент несколько раз, если они имеют несколько регистраций в ClassRegister. Это звучит грубо. DISTINCT в COUNT должен следить за тем, чтобы они учитывались только один раз для каждого класса.

+0

Спасибо, ребята. Они оба работали :-) – user1361276

Смежные вопросы