Junior
-- İki və ya daha çox gün ardıcıl səyahət edən bütün sərnişinləri tapın
sobes.tech Süni İntellekt
AI-dan cavab
İki və ya daha çox ardıcıl gün ərzində səyahət edən sərnişinləri tapmaq üçün SQL-də pəncərə funksiyalarından və ya qruplaşdırmalardan istifadə etmək olar.
SQL nümunəsi (tutaq ki, trips cədvəli passenger_id və trip_date sütunlarına malikdir):
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;
Loqika:
- Hər bir sərnişin üçün səyahətlər tarixə görə sıralanır.
- Cari tarix əvvəlki ilə müqayisə edilir ki, günlərin ardıcıl olub-olmadığı yoxlanılsın.
- Ən azı bir cüt ardıcıl gün tapılsa, sərnişin nəticələrə daxil edilir.