Mam tabelę o nazwie PAYMENT
. W tej tabeli mam identyfikator użytkownika, numer konta, kod pocztowy i datę. Chciałbym znaleźć wszystkie rekordy dla wszystkich użytkowników, którzy mają więcej niż jedną płatność dziennie z tym samym numerem konta.
AKTUALIZACJA: Dodatkowo powinien istnieć filtr, który liczy tylko rekordy z innym kodem pocztowym.
Tak wygląda stół:
| identyfikator_użytkownika | account_no | zip | data | | 1 | 123 | 55555 | 12 GRUDNIA 09 | | 1 | 123 | 66666 | 12 GRUDNIA 09 | | 1 | 123 | 55555 | 13 GRUDNIA 09 | | 2 | 456 | 77777 | 14 GRUDNIA 09 | | 2 | 456 | 77777 | 14 GRUDNIA 09 | | 2 | 789 | 77777 | 14 GRUDNIA 09 | | 2 | 789 | 77777 | 14 GRUDNIA 09 |
Wynik powinien wyglądać podobnie do tego:
| identyfikator_użytkownika | liczyć | | 1 | 2 |
Jak byś wyraził to w zapytaniu SQL? Myślałem o samodzielnym dołączeniu, ale z jakiegoś powodu moje obliczenia są złe.
2
jest liczba4
-Account_no
Myślę, że będziesz chciał odrzucić zgrupowanie.Spróbuj tego zapytania:
źródło
Nie polecałbym tego
HAVING
słowa kluczowego początkującym, jest zasadniczo do celów starszych .Nie wiem, co jest kluczem do tej tabeli ( zastanawiam się, czy jest w pełni znormalizowana ?), W związku z czym trudno mi dostosować się do Twojej specyfikacji:
Więc przyjąłem dosłowną interpretację.
Poniższe informacje są bardziej szczegółowe, ale mogą być łatwiejsze do zrozumienia i dzięki temu w utrzymaniu (użyłem CTE dla tabeli,
PAYMENT_TALLIES
ale może to byćVIEW
:źródło
źródło