Ich habe eine Tabelle mit dem Namen PAYMENT
. In dieser Tabelle habe ich eine Benutzer-ID, eine Kontonummer, eine Postleitzahl und ein Datum. Ich möchte alle Datensätze für alle Benutzer finden, die mehr als eine Zahlung pro Tag mit derselben Kontonummer haben.
UPDATE: Zusätzlich sollte es einen Filter geben, der nur die Datensätze zählt, deren Postleitzahl unterschiedlich ist.
So sieht die Tabelle aus:
| user_id | account_no | zip | Datum | | 1 | 123 | 55555 | 12-DEC-09 | | 1 | 123 | 66666 | 12-DEC-09 | | 1 | 123 | 55555 | 13-DEZ-09 | | 2 | 456 | 77777 | 14-DEZ-09 | | 2 | 456 | 77777 | 14-DEZ-09 | | 2 | 789 | 77777 | 14-DEZ-09 | | 2 | 789 | 77777 | 14-DEZ-09 |
Das Ergebnis sollte ungefähr so aussehen:
| user_id | count | | 1 | 2 |
Wie würden Sie dies in einer SQL-Abfrage ausdrücken? Ich dachte, ich würde mich selbst anschließen, aber aus irgendeinem Grund ist meine Zählung falsch.
2
eine Anzahl von4
- Sie werden dieAccount_no
Gruppierung verwerfen wollen, denke ich.Versuchen Sie diese Abfrage:
quelle
Ich würde das
HAVING
Schlüsselwort nicht für Neulinge empfehlen , es ist im Wesentlichen für Legacy-Zwecke .Ich bin mir nicht sicher, was der Schlüssel für diese Tabelle ist (ist sie vollständig normalisiert , frage ich mich?), Daher fällt es mir schwer, Ihrer Spezifikation zu folgen:
Also habe ich eine wörtliche Interpretation genommen.
Das Folgende ist ausführlicher, könnte aber leichter zu verstehen und daher zu pflegen sein (ich habe einen CTE für die Tabelle verwendet,
PAYMENT_TALLIES
aber es könnte ein seinVIEW
:quelle
quelle