Sobes.tech
Junior

-- Atrodiet visus pasažierus, kuriem ir divi vai vairāk dienu pēc kārtas ir bijušas braucieni

sobes.tech AI

Atbilde no AI

Lai atrastu pasažierus, kuriem ir bija ceļojumi divu vai vairāk dienu pēc kārtas, var izmantot SQL ar logu funkcijām vai grupēšanu.

Piemērs SQL (pieņemot, ka ir tabula trips ar kolonnām passenger_id un 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;

Loģika:

  • Katra pasažiera ceļojumi ir sakārtoti pēc datuma.
  • Salīdzinām pašreizējo datumu ar iepriekšējo, lai pārbaudītu, vai dienas ir secīgas.
  • Ja ir vismaz viena secīgu dienu pāris, pasažieris tiek iekļauts rezultātos.