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;
Արդյունք:
- Ամեն ուղևորի համար ճանապարհորդությունները դասավորված են ամսաթվով:
- Համեմատում ենք ընթացիկ ամսաթիվը նախորդի հետ՝ ստուգելու համար, արդյոք օրերը հաջորդում են մեկը մյուսին:
- Եթե առնվազն մեկ զույգ օրեր են հաջորդում, ուղևորն ընդգրկվում է արդյունքներում։