A tarefa consiste em criar um mapa visual de assentos para um modelo específico de aeronave (neste caso, 'Boeing 777-300'). O resultado deve ser uma lista de fileiras, onde para cada fileira e classe de serviço ('Business', 'Economy', 'Comfort') é mostrado um array de assentos disponíveis.
Por exemplo, para a 1ª fileira da classe executiva, pode parecer assim:
Passo 1: Selecionar a Aeronave Correta.
seats (assentos) com a tabela aircrafts_data (dados das aeronaves) pelo campo comum aircraft_code.WHERE, especificar o modelo de aeronave desejado.Passo 2: Dividir o Número do Assento em Fileira e Letra.
seats tem um formato como 12A, 30K, onde 12 é o número da fileira, e A é a letra do assento na fileira.seat_no. Por exemplo, usando a função rtrim ou expressões regulares.seat_no (por exemplo, com a função right).Passo 3: Agrupar os Assentos.
fare_conditions).GROUP BY deve incluir tanto o número da fileira calculado quanto a classe de serviço.Passo 4: Agregar as Letras dos Assentos em um Array.
A, B, C, etc.) em uma única lista ou array.json_agg (no PostgreSQL) é ideal para isso, pois cria um array JSON a partir dos valores.json_agg.Passo 5: Ordenação Final.
select
rtrim(seat_no, 'ABCDEFGHKJ')::int "row",
json_agg(right(seat_no, 1) order by right(seat_no, 1)) seats ,
fare_conditions
from seats
join aircrafts_data using(aircraft_code)
where aircrafts_data.model->>'en' = 'Boeing 777-300'
group by rtrim(seat_no, 'ABCDEFGHKJ'), fare_conditions
order by "row";