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.