2016-03-07 3 views
1

У меня есть данные, что выглядит как:Group Возвращая 1-го значения столбца дважды

ACC311 Female 3 
ACC311 Female 1 
ACC311 Female 4 
ACC311 Male 4 
ACC501 Male 4 
ACC501 Male 4 
ACC501 Male 4 
ACC501 Male 4 
. 
. 
. 

Теперь я использую следующий запрос, чтобы получить результаты

Select distinct coursecode, gender, Count(CQ) as CQ from Table1 
group by Coursecode, gender 
order by Coursecode 

Он возвращающиеся результаты, следующие, что, очевидно, не является правильным способом в соответствии с требуемой мощностью (см ниже)

CourseCode Gender CQ 

ACC311  Male  45 

ACC311  Female 22 

ACC501  Female 228 

ACC501  Male  485 

Где, как мне нужно т о получить следующее:

CourseCode Total Male Female CQ 

ACC311  67  45  22  11 

ACC501  713  485  228  111 

ответ

2

Ваш запрос возвращает строки «дважды», потому что вы группу по Coursecode, gender. DISTINCT тоже не поможет.

Самый простой способ, чтобы получить желаемый результат заключается в использовании условной агрегации:

SELECT Coursecode, 
     Count(CQ) AS CQ, 
     COUNT(gender) AS Total, 
     COUNT(CASE WHEN gender = 'Male' THEN 1 END) AS Male, 
     COUNT(CASE WHEN gender = 'Female' THEN 1 END) AS Female 
FROM Table1 
GROUP BY Coursecode 
Смежные вопросы