Junior
-- Vind alle passagiers die twee of meer dagen achter elkaar hebben gereisd
sobes.tech AI
Antwoord van AI
Om passagiers te vinden die reizen hebben gemaakt op twee of meer opeenvolgende dagen, kan SQL worden gebruikt met vensterfuncties of groeperingen.
Voorbeeld in SQL (aangenomen dat er een tabel trips is met kolommen passenger_id en trip_date):
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;
Logica:
- Voor elke passagier worden de reizen op datum gesorteerd.
- De huidige datum wordt vergeleken met de vorige om te controleren of de dagen opeenvolgend zijn.
- Als er minstens één paar opeenvolgende dagen is, wordt de passagier in het resultaat opgenomen.