2016-08-01 128 views
2

我有一个需要显示事件参加者总数的场景。在登记表的帮助下,我已经抓住了参加者的细节,我的表格如下所示。如果某些条件在mysql中满足,​​则计数两次


ID  | NAME  | PHONE_NUMBER  | IS_LIFE_PARTNER_ATTENDING

1  | ABC  | 1234567890  | N      

2  | PQR  | 1234567891  | Y      

3  | XYZ  | 1234567892  | N      

我可以很容易地通过使用计数(ID)显示注册的数量。但是,如果注册人与他/她的合作伙伴一起出现,在显示参与者人数的同时,我必须将其视为两位参与者。 (由IS_LIFE_PARTNER_ATTEDNING列确定)

因此,在上述情况下,注册人数为3,但与会者人数为4,因为“PQR”与他/她的生活伴侣在一起。

我们如何在mysql查询中做到这一点?

回答

4

您可以使用下面的查询:由于布尔表达式在MySQL解析为0/1,这样就可以利用这个

SELECT 
SUM(1 + (IS_LIFE_PARTNER_ATTEDNING = 'Y')) AS totalAttendees 
FROM your_table; 

WORKING DEMO

在你的情况。

注:

SUM(a=b) returns 1 only if a is equal to b otherwise it returns 0

注意:

*永远不要低估这些括号(IS_LIFE_PARTNER_ATTEDNING = 'Y')。如果您忽略它们,那么总和将导致zero(0)

* because of operator precedence

+0

运行完美,谢谢! – Prashanth

4

使用SUMCASE

SELECT 
Name, 
SUM(CASE WHEN IS_LIFE_PARTNER_ATTEDNING='y' THEN 2 ELSE 1 END) AS'Attendes' 
FROM 
table 
GROUP by name 
相关问题