按性别划分活跃成员

时间:2012-05-31 13:32:24

标签: mysql join

我的这个项目的最终目标是培养正确数量的活跃​​女性员工,活跃的女性家属,活跃的男性员工和活跃的男性家属。我将最终使用散点图或饼图将此信息显示给客户端

我目前有一个名为ActiveMemberType的表,显示...

CC  HID     ID      DOB  Gender Month Total_Paid ActiveType
B11 BLM0    00  1987-07-12  F   2004-09 0.00    Dependent
B11 BLM0    00  1987-07-12  F   2004-10 0.00    Dependent
B11 BLM0    00  1987-07-12  F   2004-11 0.00    Dependent
B11 BLM0    00  1987-07-12  F   2004-12 0.00    Dependent

我有一个名为ActiveMembersPerMonth的表,显示了......

CC  ID         GID  Month-Total-Emp-Dep
B11 115 12818   2003-01 24  12  12
B11 115 12818   2003-02 24  12  12
B11 115 12818   2003-03 24  12  12
B11 115 12818   2003-04 24  12  12

也许为女性支付的总额,然后我可以隔离活动类型

ID和GID用于形式,并且在这里确实没有需要,CC是除了月份之外唯一可以加入的。

我怎么能得到这两张表来说明给我一些看起来像这样的结果......

 CC HID SD  DOB      MONTH Active_Female_Emp Active_Male_Emp Active_Female_Dep Active_Female_Emp 
b11 BLM 0 yyyy-mm-dd  2010-01 7                     7             3               3

我需要实际计数最终等于总数,显然和......几乎所有这些字段都是静态的,因为它是历史数据,活动是唯一有可能改变的字段。

我的主要问题是我从所有成员中扣除了所有成员,并将其除以一个SUM(IF(性别=' M')1,0)类型交易,结果非常不合适。

CC HID和_ID是使该成员唯一的原因,因此请记住,它不在每月活动成员表中,因此我可能需要一个子查询...当我进入时我会越过那个到达那里...让我们集思广益!谢谢!

我现在正在研究这个项目。请记住,还有其他表,这些是我创建的聚合表,用于存放我需要的特定数据。

这是感谢Egyal的更新:

SELECT Client_Cd, Holder_Id, _ID,  Incurred_Month,          
SUM(Gender='F' AND Active_Type='Employee' ) AS Active_Female_Emp,          
SUM(Gender='M' AND Active_Type='Employee' ) AS Active_Male_Emp,          
SUM(Gender='F' AND Active_Type='Dependent') AS Active_Female_Dep,          
SUM(Gender='M' AND Active_Type='Dependent') AS Active_Male_Dep,
SUM(Total_Paid) as Total_Paid
FROM ActiveMemberType
WHERE Incurred_Month = '2006-06'
GROUP BY client_Cd, HoldeR_ID, _Id, Incurred_Month; 

你显然看不到这一点,但是当我看到我的ActiveMembersPerMonth表

B11 115 12818   2006-06 428 180 248 42

没有标题... 428是我06-06月的活跃总数...

现在有了您的查询,我的计数会爆炸到2221个活动...可能是计算错误...

您的结果:

B11 BLM0    00  2006-06 2221    619 1468    2223    752371.20

无论如何,我需要在日期范围内给定月份的Gender_Active和Gender_Ampid

1 个答案:

答案 0 :(得分:2)

SELECT   Month,
         SUM(IF(Gender='F' AND ActiveType='Employee' , Total_Paid, 0)) AS fEmp,
         SUM(IF(Gender='M' AND ActiveType='Employee' , Total_Paid, 0)) AS mEmp,
         SUM(IF(Gender='F' AND ActiveType='Dependent', Total_Paid, 0)) AS fDep,
         SUM(IF(Gender='M' AND ActiveType='Dependent', Total_Paid, 0)) AS mDep
FROM     ActiveMemberType
GROUP BY Month