Junior
-- Ике же андан көп күн үздүксиз саяхаттаган бардык жүргүнчүлөрдү табуу
sobes.tech AI
AIден жооп
İki yoki undan ortiq ketma-ket kunlarda sayohat qilgan yo'lovchilarni topish uchun SQL bilan oynali funksiyalar yoki guruhlashlardan foydalanish mumkin.
SQL misoli (taxmin qilamiz, trips jadvali passenger_id va trip_date ustunlariga ega):
WITH ordered_trips AS (
SELECT
passenger_id,
trip_date,
LAG(trip_date) OVER (PARTITION BY passenger_id ORDER BY trip_date) AS prev_date
FROM trips
), consecutive_days AS (
SELECT
passenger_id,
trip_date,
prev_date,
CASE WHEN trip_date = DATE_ADD(prev_date, INTERVAL 1 DAY) THEN 1 ELSE 0 END AS is_consecutive
FROM ordered_trips
), flagged AS (
SELECT passenger_id
FROM consecutive_days
WHERE is_consecutive = 1
GROUP BY passenger_id
)
SELECT DISTINCT passenger_id FROM flagged;
Логика:
- Ар бир жүргүнчүнүн бардык сапарлары даталар боюнча тартибләнә.
- Учурдагы дата менен алдынкы датаны салыштырып, күндөрдүн бири-бирине жакын экенин текшеребиз.
- Эгер кеминде бир жуп күндөр бири-бирине жакын болсо, жүргүнчү натыйжаларга киргизилет.