如果某些条件满足mysql,则计数两次

时间:2016-08-01 15:50:44

标签: mysql sql count

我有一个场景,我需要显示一个事件的参与者总数。在注册表的帮助下,我已经掌握了参加者的详细信息,我的桌子如下所示。

ID     | NAME     | PHONE_NUMBER     | IS_LIFE_PARTNER_ATTENDING
1      | ABC      | 1234567890       | N                          
2      | PQR      | 1234567891       | Y                          
3      | XYZ      | 1234567892       | N                          

我可以使用count(id)轻松显示注册数量。但是,如果注册人与他/她的伴侣一起来,我必须考虑作为两个与会者的参加人数。 (由IS_LIFE_PARTNER_ATTEDNING列标识)

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

我们如何在mysql查询中执行此操作?

2 个答案:

答案 0 :(得分:4)

SUMCASE

一起使用
SELECT 
Name,
SUM(CASE WHEN IS_LIFE_PARTNER_ATTEDNING='y' THEN 2 ELSE 1 END ) AS'Attendes'
FROM
table
GROUP by name

答案 1 :(得分:4)

您可以使用以下查询:

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

WORKING DEMO

由于布尔表达式解析为0/1中的MySQL,因此您可以根据需要将其大写。

注意:

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