MYSQL在SELECT语句中的计数

3
我有这样的数据库数据:
id  class  gender
1     A      F
2     B      F
3     A      M
4     A      F
5     A      M
6     B      M
7     A      F
我想要用查询语句生成这样的报告:
_________________________
        性别
班级    男    女    总数
_________________________
A       2     3      5
B       1     1      2
_________________________
总计    3     4      7
请问如何编写该查询语句?

4
数据库服务器的主要目的是存储数据,而不是生成报告。 虽然计算是可能的,但通过格式化使其变得困难,为什么不在应用程序层面上完成呢? - John Woo
谢谢,现在我有了一些想法。我将在应用程序中计算总数。但是如何根据班级获取总性别? - anon
2个回答

5
请看下面的示例

SQL Fiddle DEMO

这是一个SQL Fiddle演示链接。
SELECT class,
      SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) `M`,
      SUM(CASE WHEN gender = 'F' THEN 1 ELSE 0 END) `F`,
      COUNT(1) Total
FROM Table1
GROUP BY class

2
要获取每个性别的总数:
SELECT class, gender, COUNT(*) as gender_count
FROM Gender
GROUP BY class, gender;

获取总数:
SELECT class, COUNT(*) as total_count
FROM Gender
GROUP BY class;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接