Saya mempunyai jadual dengan ID pengguna, bandar dan tarikh tempahan. Saya perlu mengetahui pengguna yang melawat hanya satu bandar dan bukan beberapa bandar dalam julat tarikh.
SELECT ID Pengguna, bandar, COUNT(*) sebagai hasilnya DARIPADA lawatan WHERE start_ts >= 1675209600 -- 1675209600 = 01.02.2023 00:00 DAN end_ts <= 1676419200 -- 1676419200 = 15.2.2023 00:00 KUMPULAN MENGIKUT user_id, city
user_id | city | hasil |
---|---|---|
10 | Munich | 1 |
11 | Barcelona | 2 |
11 | Berlin | 1 |
12 | Barcelona | 1 |
13 | Prague | 2 |
11 | Barcelona | 1 |
13 | Berlin | 1 |
ID Pengguna 10 dan 12 hanya melawat satu bandar. Contohnya, ID pengguna 11 melawat Barcelona dua kali.
Saya telah mencuba menggunakan NOT EXISTING dan INNER JOIN. Bagaimana untuk mendapatkan pengguna yang hanya melawat satu bandar?
Sila tambah syarat HAVING pada pertanyaan anda:
Jika anda hanya perlu mengira bilangan bandar unik, anda boleh menggunakan COUNT(DISTINCT(city)) dan mengalih keluarnya daripada kumpulan seperti ini: