Sobes.tech
Junior

-- Encontrar todos os passageiros que fizeram viagens de dois ou mais dias consecutivos

sobes.tech IA

Resposta da IA

Para encontrar passageiros que fizeram viagens em dois ou mais dias consecutivos, pode usar SQL com funções de janela ou agrupamentos.

Exemplo em SQL (pressupõe uma tabela trips com colunas passenger_id e 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;

Lógica:

  • Para cada passageiro, ordenamos as viagens por data.
  • Comparamos a data atual com a anterior para verificar se os dias são consecutivos.
  • Se houver pelo menos um par de dias consecutivos, o passageiro aparece no resultado.