SQL: Kira jika ID yang hanya muncul pada minggu lepas tidak muncul
P粉529581199
P粉529581199 2023-09-07 11:58:57
0
1
489

Saya cuba melakukan tatal mingguan untuk melihat sama ada pengguna menghadiri atau tidak menghadiri acara. Namun, saya hanya ingin menyenaraikan mereka sebagai "Tidak Hadir" jika mereka hadir pada minggu lepas . Sebagai contoh, jika pengguna menghadiri minggu 1 dan 7, mereka hanya akan dikira sebagai "tidak hadir" dalam minggu 2 dan 8.

Contoh data ringkas:

Jadual Acara yang merangkumi semua tarikh acara (mingguan) dan ID acara unik (masa menaik)

Tarikh_Peristiwa Event_ID
2023-03-09 1
2023-03-16 2
2023-03-23 3

Jadual Pengguna menunjukkan tarikh acara dan ID yang mereka hadiri:

Tarikh_Peristiwa Event_ID ID_Pengguna
2023-03-09 1 151
2023-03-16 2 151
2023-03-23 3 151
2023-03-09 1 299
2023-03-23 3 299
2023-03-16 2 373

Soalan saya: Bagaimana untuk melengkapkan output berikut menggunakan SQL? (Pengguna 299 mengambil bahagian dalam aktiviti 1 tetapi bukan aktiviti 2; pengguna 373 menyertai aktiviti 2 tetapi bukan aktiviti 3)

Tarikh_Peristiwa_Terlepas ID_Acara_Terlepas ID_Pengguna
2023-03-16 2 299
2023-03-23 3 373

Saya cuba menggunakan

SELECT      Event_ID + 1,
            User_ID
FROM users u
WHERE NOT EXISTS (SELECT 1 FROM events WHERE u.Event_ID=e.Event_ID + 1)

Tidak menghasilkan output yang betul

P粉529581199
P粉529581199

membalas semua(1)
P粉818561682

Andaikan Event_ID meningkat sebanyak 1, anda juga boleh mempertimbangkan perkara berikut.

SELECT u.Event_ID + 1 AS Missed_Event_ID, u.User_ID
  FROM users u LEFT JOIN users v 
    ON u.User_ID = v.User_ID AND u.Event_ID + 1 = v.Event_ID
 WHERE v.Event_ID IS NULL AND u.Event_ID < (SELECT MAX(Event_ID) FROM events);

-- Query results
+-----------------+---------+
| Missed_Event_ID | User_ID |
+-----------------+---------+
|               2 |     299 |
|               3 |     373 |
+-----------------+---------+
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan