2016-08-01 2 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

Вы можете использовать следующий запрос:

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

+0

отлично работает, спасибо! – Prashanth

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 
Смежные вопросы