首页 > 解决方案 > 根据类别和组计算男性和女性

问题描述

Stackoverflow 的成员,我已经使用 Mysql php 编程九个月了,但是我在开发一个小型员工平台时遇到了困难。我知道这可能是一个重复的问题,但我一直在寻找如何在没有任何希望的情况下遇到这个问题
这里是我的 Mysql 表与员工

No  full_name       gender          proffesional      Center
1  Ali P Ali            M           BACHELOR            JUIO
2. PETER PETERS         M           DIPLOMA             PETERS
3. ASHA AL ASHA         F           BACHELOR            ST.JOHN
4. JAMAL ALI JAMAL      M           DIPLOMA             ST.JOHN
5.JULIO J. JULIO        F           DIPLOMA             ST.JOHN
6.ROSE A LYMO           F           BACHELOR            PETERS

我想查询此表以产生以下结果。我怎么会遇到这个????

 center Name     |BACHELOR  | DIPLOMA   | Total
                 |M  | F    | M   | F    | 
   JUIO          | 1 | 0    | 0   |0     |  1
   PETERS        |   | 1    | 1   |0     |  2
   ST.JOHN       |   | 1    | 1   |1     |  3
  TOTAL          | 1 | 2    | 2   |1     |  6

这是我迄今为止尝试过的

select employee.work_center,    count(case when gender='M' then 1 end)as male,  count(case when gender='F' then 1 end) as female   from employee WHERE proffesional="DIPLOMA" group by work_center

这会产生仅文凭的结果,如下所示

 work_center male female    
    QUET        0   1
    ST.JOHN     2   0
    ST.PETERS   1   1

上面的脚本给出了一个总的结果,并且没有显示每个中心。

标签: phpmysql

解决方案


工作了几个小时后,我设法编写了以下查询并且运行良好。

select work_center,
count(case when proffesional="DIPLOMA" AND gender='M' then 1 end)as DP_male,
count(case when proffesional="DIPLOMA" AND gender='F' then 1 end) as DP_female,
count(case when proffesional="BACHELOR" AND gender='M' then 1 end)as BAC_male,
count(case when proffesional="BACHELOR" AND gender='F' then 1 end) as BAC_female from employee group by work_center

欢迎对我的方法进行任何改进。


推荐阅读