我有一个场景,我需要显示一个事件的参与者总数。在注册表的帮助下,我已经掌握了参加者的详细信息,我的桌子如下所示。
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查询中执行此操作?
答案 0 :(得分:4)
将SUM
与CASE
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;
由于布尔表达式解析为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)
。