2014-09-26 65 views
1

我甚至不确定这是否可能,或者我是否需要编写多个查询。多个字段的SQL计数

我有一个数据库表如下: -

用户

  • university_id
  • 性别

我想实现的是如下

| Uni | Total Users | Male | Female 
| Uni1 | 30   | 15 | 15 
| Uni2 | 40   | 25 | 15 
输出

如果您可以告诉我是否可以在单个查询中实现此功能,或者我应该对每个结果使用不同的查询,我将不胜感激。

预先感谢您。

菲尔

回答

3

这里是你如何可以在单个查询做到这一点:

select 
    UniversityId, 
    count(*) as `Total Users`, 
    sum(case when gender = 'male' then 1 else 0 end) as Male, 
    sum(case when gender = 'female' then 1 else 0 end) as Female 
from User 
group by UniversityId 

演示:http://www.sqlfiddle.com/#!2/e7d16a/4

+0

天才!非常感谢你:-) – Phill 2014-09-26 09:30:20

+1

Phill,考虑接受答案.. :) – 2014-09-26 09:36:04

+0

完成 - 再次感谢你。 – Phill 2014-09-26 09:45:10