Saya punya tabel bernama PAYMENT
. Dalam tabel ini saya memiliki ID pengguna, nomor akun, kode ZIP dan tanggal. Saya ingin menemukan semua catatan untuk semua pengguna yang memiliki lebih dari satu pembayaran per hari dengan nomor akun yang sama.
UPDATE: Selain itu, harus ada filter daripada hanya menghitung catatan yang kode ZIP-nya berbeda.
Seperti inilah tabelnya:
| user_id | account_no | zip | tanggal | | 1 | 123 | 55555 | 12-DES-09 | | 1 | 123 | 66666 | 12-DES-09 | | 1 | 123 | 55555 | 13-DEC-09 | | 2 | 456 | 77777 | 14-DEC-09 | | 2 | 456 | 77777 | 14-DEC-09 | | 2 | 789 | 77777 | 14-DEC-09 | | 2 | 789 | 77777 | 14-DEC-09 |
Hasilnya akan terlihat mirip dengan ini:
| user_id | hitung | | 1 | 2 |
Bagaimana Anda mengekspresikannya dalam query SQL? Saya berpikir untuk bergabung sendiri tetapi karena alasan tertentu hitungan saya salah.
2
memiliki hitungan4
- Anda akan ingin membuangAccount_no
pengelompokan yang saya pikir.Coba kueri ini:
sumber
Saya tidak akan merekomendasikan
HAVING
kata kunci untuk pemula, ini pada dasarnya untuk tujuan warisan .Saya tidak jelas tentang apa kunci untuk tabel ini (apakah ini dinormalisasi sepenuhnya , saya bertanya-tanya?), Akibatnya saya merasa sulit untuk mengikuti spesifikasi Anda:
Jadi saya mengambil interpretasi literal.
Berikut ini lebih verbose tetapi bisa lebih mudah dipahami dan karenanya dipertahankan (Saya sudah menggunakan CTE untuk tabel
PAYMENT_TALLIES
tetapi bisa menjadiVIEW
:sumber
sumber