2016-07-27 13 views
0

Hallo Ich versuche, eine Reihe von Unterabfragen zu gruppieren, aber immer das gleiche Ergebnis für jede Zeile zu erhalten.Wie mehrere Unterabfragen in MySQL zu gruppieren

 SELECT Campaign_Name, 
        (SELECT COUNT(Bounce) 
        FROM `temp_Data`) AS Sent, (SELECT COUNT(Bounce) 
              FROM `temp_Data` 
              WHERE Bounce = '0') AS Delivered, (SELECT SUM(Opened) 
                 FROM `temp_Data` 
                 WHERE Opened = '1')AS Opened 
FROM temp_Data 

GROUP BY Campaign_Name 

die Ergebnisse sind:

Campaign Name Sent Delivered Opened 
Campaign1  300 278  196 
Campaign2  300 278  196 

meine Daten in 0,1 so, auch wenn ich es noch ähnliches Ergebnis gibt mir noch summieren.

Wie kann ich die individuelle Anzahl für jede Kampagne erhalten?

+0

Ändern Sie 'Where-Klausel' Sie ändern es nicht. – NEER

+0

Zeigen Sie uns, wie Ihr Tabellenschema aussieht. – Martin

Antwort

0

Dies kann in einer einzigen Abfrage

SELECT 
    Campaign_Name, 
    COUNT(*) AS Sent, 
    COUNT(CASE WHEN Bounce = '0' THEN 1 ELSE NULL END) AS Delivered, 
    COUNT(CASE WHEN Opened = '1' THEN 1 ELSE NULL END) AS Opened 
FROM temp_Data 
GROUP BY Campaign_Name 

Werfen Sie einen Blick auf control functions und COUNT erfolgen.

Der schwierige Teil ist, dass COUNT nicht für NULL Werte inkrementieren, also verwende ich das, um eine selektive Anzahl zu tun.

+0

Danke, aber Ihr Code kommt mit einem Syntaxfehler zurück: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von 'THEN 1 ELSE NULL) entspricht AS Delivered, COUNT (CASE geöffnet =' 1 'THEN 1 ELSE NULL) AS' in Zeile 4 – Drake

+0

Ich glaube, ich habe behoben es. Bitte überprüfe es jetzt. – evilpenguin

+0

Sorry immer noch gleichen Fehler – Drake

Verwandte Themen