Sobes.tech
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.