Sobes.tech
Junior
39

-- Екі немесе одан да көп күн қатарынан саяхаттаған барлық жолаушыларды табыңыз.

Сұралған компаниялар
Яндекс

AI-дан жауап

sobes.tech AI

Чтобы найти пассажиров, которые совершали поездки два или более дня подряд, можно использовать SQL с оконными функциями или группировками.

Пример на SQL (предполагается таблица trips с колонками passenger_id и 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;

Логика:

  • Для каждого пассажира упорядочиваем поездки по дате.
  • Сравниваем текущую дату с предыдущей, чтобы проверить, идут ли дни подряд.
  • Если есть хотя бы одна пара последовательных дней, пассажир попадает в результат.