2016-08-01 11 views
2

Ich habe ein Szenario, in dem ich die Gesamtzahl der Teilnehmer eines Ereignisses anzeigen muss. Mit Hilfe des Anmeldeformulars habe ich bereits die Details der Teilnehmer erfasst und mein Tisch sieht wie folgt aus.Zählen Sie zweimal, wenn bestimmte Bedingung in mysql erfüllt


ID  | NAME  | PHONE_NUMBER  | IS_LIFE_PARTNER_ATTENDING

1  | ABC  | 1234567890  | N      

2  | PQR  | 1234567891  | Y      

3  | XYZ  | 1234567892  | N      

I Anzahl der Registrierungen leicht mit count (id) anzeigen kann. Aber während der Anzahl der Teilnehmer muss ich zwei Teilnehmer berücksichtigen, wenn der Registrant mit seinem Partner kommt. (identifiziert durch Spalte IS_LIFE_PARTNER_ATTEDNING)

Also, in dem obigen Fall ist die Anzahl der Registranten 3, aber die Anzahl der Teilnehmer ist 4, weil "PQR" mit seinem Lebenspartner kommt.

Wie können wir das in MySQL-Abfrage tun?

Antwort

4

Sie die folgende Abfrage verwenden:

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

WORKING DEMO

Da boolean Ausdruck löst sich in 0/1 in MySQL, so dass Sie diese nutzen können in Ihrem Fall.

Hinweis:

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

Vorsicht:

* Unterschätzen Sie nie diese Klammern (IS_LIFE_PARTNER_ATTEDNING = 'Y'). Wenn Sie sie weglassen, würde die gesamte Summe zero(0) ergeben.

* because of operator precedence

+0

funktioniert perfekt, danke! – Prashanth

4

Verwenden SUM mit CASE

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