Ich habe eine typische Benutzertabelle zusätzlich zu der folgenden Feature-TabelleSQL: Zählt eindeutig Benutzer mit Bedingungen basierend auf viele zu viele Tabellen
Features:
-----------------------
| userId | feature |
-----------------------
| 1 | account |
| 1 | hardware |
| 2 | account |
| 3 | account |
| 3 | hardware |
| 3 | extra |
-----------------------
Grundsätzlich versuche ich, einige zu bekommen zählt zu Berichtszwecken. Insbesondere versuche ich die Anzahl der Benutzer mit Konten und Hardware zusammen mit der Gesamtzahl der Konten zu finden.
Ich weiß, ich kann das tun, nach der Gesamtzahl der Konten
SELECT
COUNT(DISTINCT userId) as totalAccounts
FROM features
WHERE feature = "account";
Ich bin nicht sicher, zu erhalten, wie wenn die Anzahl der Benutzer mit beiden Konten und Hardware zu bekommen. In diesem Beispiel-Dataset ist die Nummer, nach der ich suche. Benutzer 1 und 3 haben beide Konten und Hardware.
Ich würde es vorziehen, dies in einer einzigen Abfrage zu tun. Möglicherweise CASE mit (Beispiel für totalAccounts unten):
SELECT
COUNT(DISTINCT(CASE WHEN feature = "account" THEN userId END)) as totalAccounts,
COUNT(?) as accountsWithHardware
FROM features;