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;
ლოგიკა:
- თითოეულ მგზავრისთვის, მოგზაურობები მოწესრიგებულია თარიღის მიხედვით.
- შედარება ხდება მიმდინარე თარიღსა და წინამორბედს შორის, რათა დადგინდეს, არიან თუ არა დღეები თანმიმდევრული.
- თუ მინიმუმ ერთი წყვილი თანმიმდევრული დღეა, მგზავრი შედის შედეგებში.