Junior
-- İki veya daha fazla gün ardışık seyahat eden tüm yolcuları bulun
sobes.tech yapay zeka
AI'dan gelen yanıt
İki veya daha fazla ardışık gün içinde seyahat eden yolcuları bulmak için SQL'de pencere fonksiyonları veya gruplamalar kullanılabilir.
SQL örneği (trips tablosunun passenger_id ve trip_date sütunlarına sahip olduğu varsayılır):
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;
Mantık:
- Her yolcu için seyahatler tarih sırasına göre düzenlenir.
- Günlerin ardışık olup olmadığını kontrol etmek için mevcut tarih, önceki tarih ile karşılaştırılır.
- En az bir ardışık gün çifti bulunursa, yolcu sonuçta yer alır.