Kämpfe mit einer komplexen SQL -Abfrage [Duplikat]MySql

MySQL DBMS-Forum
Anonymous
 Kämpfe mit einer komplexen SQL -Abfrage [Duplikat]

Post by Anonymous »

Ich habe die folgenden Tabellen < /p>

Code: Select all

Campaigns

Registration_Date DATE
Campaign_ID INT
Country STRING
Advertising_Channel STRING
Registrations INT

Users

Registration_Date DATE
Registration_ID INT
Campaign_ID INT
Country STRING
Day7_Deposit_Amount INT
Day30_Deposit_Amount INT
Day60_Deposit_Amount INT
Day90_Deposit_Amount INT
Day120_Deposit_Amount INT
Day150_Deposit_Amount INT
Day180_Deposit_Amount INT
In den Benutzern ist jeder Tag#_depositbetrag Feld eine kumulative Summe. Darüber hinaus kann die Kampagnen -ID 0 sein und signalisiert, dass der Benutzer nicht über eine Marketingkampagne registriert wurde.

Code: Select all

Registration_Date
Registration_Country
TrafficType
Advertising_Channel
Advertising_Spend
Number_Registrations
Number_Day7_Depositors
Number_Day30_Depositors
Number_Day60_Depositors
Number_Day90_Depositors
Number_Day120_Depositors
Number_Day150_Depositors
Number_Day180_Depositors
Accum_Day7_Deposit_Amount
Accum_Day30_Deposit_Amount
Accum_Day60_Deposit_Amount
Accum_Day90_Deposit_Amount
Accum_Day120_Deposit_Amount
Accum_Day150_Deposit_Amount
wobei jedes num_day # _depositors Feld eine kumulative Anzahl ist, wie viele Benutzer innerhalb # Tage eine Einzahlung erstellt haben. Das Feld "Registrierungen" sagt uns, wie viele Spieler an einem bestimmten Tag in einem bestimmten Land von einer bestimmten Marketingkampagne registriert wurden (da dieselbe Kampagne an mehreren Tagen in mehreren Ländern ausgeführt werden kann).

Code: Select all

SELECT
users.registration_date Registration_Date,
CASE
WHEN users.country = "USA" THEN "USA"
ELSE "Rest of the World"
END Country,
CASE
WHEN users.campaign_id = 0 THEN "Organic"
ELSE "Paid"
END TrafficType,
CASE
WHEN users.campaign_id = 0 THEN "Organic"
ELSE campaigns.channel
END Advertising_Channel,
CASE
WHEN users.campaign_id = 0 THEN  0
ELSE campaigns.spend
END Advertising_Spend,
count(users.registration_id) Registrations,
SUM(IF(users.day7_deposit_amount > 0, 1,0)) Number_Day7_Depositors,
SUM(users.day7_deposit_amount) Accum_Day7_Deposit_Amount,
FROM
campaigns
RIGHT JOIN
users
ON
campaigns.campaign_id = users.campaign_id AND
campaigns.registration_date = users.registration_date AND
campaigns.country = users.country
GROUP BY
users.campaign_id,
users.registration_date,
country,
campaigns.channel,
campaigns.spend

< /code>
Hier ist das Problem. Ich bekomme die meisten Daten, aber alle Zeilen in Kampagnen 
, bei denen 0 Registrierungen angezeigt wurden. Ich bin mir nicht sicher, wie ich die Abfrage beheben soll.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post