Junior
-- Najít všechny cestující, kteří podnikli cesty dva nebo více dnů po sobě
sobes.tech AI
Odpověď od AI
Pro nalezení cestujících, kteří podnikli cesty ve dvou nebo více po sobě jdoucích dnech, lze použít SQL s okénkovými funkcemi nebo seskupeními.
Příklad v SQL (předpokládá se tabulka trips se sloupci passenger_id a 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;
Logika:
- Pro každého cestujícího jsou cesty seřazeny podle data.
- Porovnáváme aktuální datum s předchozím, abychom zjistili, zda jsou dny po sobě jdoucí.
- Pokud existuje alespoň jeden pár po sobě jdoucích dnů, cestující je zahrnut do výsledku.