2012-04-30 5 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_idclass_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에 복수의 등록이있다. 총 소리가 난다. COUNT의 DISTINCT는 클래스 당 한 번만 계산되도록해야합니다.

+0

감사합니다. 그들은 둘 다 일했다 :-) – user1361276

관련 문제