Junior
-- Βρείτε όλους τους επιβάτες που πραγματοποίησαν ταξίδια δύο ή περισσότερων ημερών στη σειρά
sobes.tech AI
Απάντηση από 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;
Λογική:
- Για κάθε επιβάτη, οι ταξιδιωτικές ημερομηνίες ταξινομούνται.
- Συγκρίνουμε την τρέχουσα ημερομηνία με την προηγούμενη για να ελέγξουμε αν οι ημέρες είναι διαδοχικές.
- Αν υπάρχει τουλάχιστον ένα ζεύγος διαδοχικών ημερών, ο επιβάτης εμφανίζεται στα αποτελέσματα.