SQL-Abfrage doppelten Datensatz zählt zu erhalten, basierend auf anderen Faktoren
-
07-07-2019 - |
Frage
Ich habe eine Tabelle (Teilnehmer), die mehrere Spalten hat, die alle verschieden sein könnte. Zwei Spalten, die in dieser Abfrage von besonderem Interesse sind, sind die Benutzer-ID und die ProgramID Ich habe einen zweiteiligen inquery hier.
- Ich will die Liste alle Benutzer-IDs erwerben können, die mehr als einmal in dieser Tabelle angezeigt. Wie gehe ich dagegen zu tun?
-
Ich möchte in der Lage, die Anzahl aller ProgramID des zu erwerben, wo die gleiche Benutzer-ID in mehreren programIDs erscheint. (D Anzahl der Programme, bei denen gleiche Benutzer-ID in zwei Programmen angezeigt wird, Anzahl der Programme, bei denen gleiche Benutzer-ID erscheint in 3-Programme, etc ...) Zum Beispiel:
programID: prog1 userID: uid1 userID: uid3 userID: uid12 programID: prog2 userID: uid3 userID: uid5 userID: uid14 userID: uid27 programID: prog3 userID: uid3 userID: uid7 userID: uid14 userID: uid30 programID: prog4 userID: uid1
Erwartete Ergebnisse: userID count = 2; Programme = 3 userID count = 3; Programme = 3
Kann mir jemand bitte helfen Sie mir mit diesem.
mein aktueller Code für Frage 1:
SELECT
WPP.USERID,
WPI.EMAIL,
WPI.FIRSTNAME,
WPI.LASTNAME,
WPI.INSTITUTION
FROM WEBPROGRAMPARTICIPANTS WPP
INNER JOIN WEBPERSONALINFO WPI
ON WPP.USERID = WPI.USERID
INNER JOIN WEBPROGRAMS WP
ON WPP.PROGRAMCODE = WP.PROGRAMCODE
WHERE
WP.PROGRAMTYPE IN ('1','2','3','4','5','6', '9', '10')
GROUP BY
WPP.USERID,
WPI.EMAIL,
WPI.FIRSTNAME,
WPI.LASTNAME,
WPI.INSTITUTION
HAVING COUNT(WPP.USERID) > 1
ORDER BY WPI.EMAIL
Lösung 3
Dies war ein Problem auf meiner Seite, mit einem logischen Schritt, der ausgelassen wurde.
Andere Tipps
1.
select userID , SUM(userID ) AS Count
from Preparations
group by userID where Count > 1
Ihre Anfrage für einen Teil sieht man gut. Hier ist Ihre Abfrage für Teil 2:
SELECT DISTINCT p1.programID, COUNT(p1.userID) AS Multiple
FROM participants p1
JOIN participants p2 ON p2.userID = p1.userID
GROUP BY p1.userID, programID
ORDER BY Multiple, programID
Es listet ProgramID und die Anzahl der anderen programIDs, die die gleiche Benutzer-ID für jede ProgramID erscheint in. Ich denke, Ihre erwarteten Ergebnisse für Ihre Beispieldaten falsch sind. Es sollte sein:
userID count = 1; Programme = 3; userID count = 2; Programme = 4; userID count = 3; Programme = 3;
Sie können die oben als Unterabfrage (abgeleitete Tabelle) verwenden, wenn Sie die Ergebnisse für die Feinabstimmung wollen Ihre erwarteten Ergebnisse sehen eher aus wie.