SELECT
userid,
CASE
WHEN (COUNT(CASE
WHEN onlinesportsgamewagers != 0
THEN 1
ELSE null
END)
+ COUNT(CASE
WHEN depositmade_amt != 0
THEN 1
ELSE null
END)) >= 10
THEN "VIP"
ELSE "NON-VIP"
END as VIPcheck
FROM
player_activity
WHERE
userid = 2023410
GROUP BY
year(txndate), month(txndate)
Diese Abfrage bestimmt den VIP-Status des Benutzers für jeden Monat.Verwendung der Bedingung in der SQL-Abfrage
Letztendlich möchte ich eine Abfrage haben, die bestimmt, ob der Benutzer für mindestens 3 Monate (einschließlich des aktuellen Monats) VIP-Status erreicht hat. Momentan ist es nur der Benutzer 2023410, aber irgendwann möchte ich das für die gesamte Datenbank ausführen.
Daher wäre meine letzte Ausgabe sein:
Benutzer - VIPcheck (3 verschiedene Monate w/Aktiv-Status)
(eine Zeile pro Benutzer-ID)
HAVING COUNT(CASE WHEN (COUNT(CASE WHEN onlinesportsgamewagers != 0
THEN 1
ELSE null
END)
+ COUNT(CASE WHEN depositmade_amt != 0
THEN 1
ELSE null
END)) >= 10
THEN 1
ELSE 0
END)
die oben mit Aussage versucht, aber es hat nicht funktioniert. Irgendwelche Vorschläge?
Hallo. Ihre Abfrage schien zu funktionieren. Allerdings verstehe ich nicht, warum man den [VIP-Status für einen Benutzer pro Monat] in der FROM-Sektion anstatt in der SELECT-Sektion einträgt. – eddd83
@ eddd83. . . Ich verstehe den Kommentar nicht vollständig, aber diese Abfrage muss zwei Aggregationen durchführen. Daher gibt es in der FROM-Klausel eine Unterabfrage. –