SQL - Полное руководство (MySQL, PostgreSQL и др.)
SQL - это САМЫЙ важный язык запросов, который вы можете изучить! Он используется многими популярными системами управления базами данных, такими как MySQL или PostgreSQL. Но он также используется для анализа данных и фреймворков и инструментов больших данных, таких как Apache Spark.
select count(*) as "total flights",
min(f.arrival_date - f.departure_date)::time as "min flight's duration",
max(f.arrival_date - f.departure_date)::time as "max flight's duration"
from flight f
where
(
(f.departure_airport_code = 'MNK' and f.arrival_airport_code = 'LDN')
or
(f.departure_airport_code = 'LDN' and f.arrival_airport_code = 'MNK')
) and f.status = 'ARRIVED';
Всего таких перелётов: 4
Минимальный перелёт: 03:11:00,
Максимальный перелёт: 03:45:00
SELECT max(arrival_date - departure_date)::time max,
min(arrival_date - departure_date)::time min,
count(id) total
FROM flight
WHERE departure_airport_code IN ('MNK', 'LDN')
AND arrival_airport_code IN ('MNK', 'LDN')
AND status = 'ARRIVED';
select f.id, f.arrival_date - f.departure_date as "flight's duration"
from flight f
where f.status = 'ARRIVED'
order by "flight's duration" desc
limit 2;
А всё потому, что рейс под ID 6 имеет статус - отменён - то есть, как можно рассматривать его продолжительность, если самолёт никуда не летал? Нужно было исключить в условии, и рассматривать только те, которые ПРИБЫЛИ.
В общем, я использовал вот этот сайт, сразу же будет писать разницу
https://howlongagogo.com/date/2020/december/18
кастить тип нужно с обоих сторон, чтобы сравнивать дату с датой, иначе, на найдётся, т.к. с левой стороны ещё и время указано. Уверен, Денис об этом скажет) Просто, я не дошёл ещё до этого
and departure_date::date = (now() - interval '2 years 3 months 8 days')::date;
aircraft (самолет)
id
model (модель самолета - unique)
если уникальный, значит должно быть вот так:
create table aircraft
(
id int primary key generated by default as identity,
model varchar(64) unique not null
)
видимо ошибся, Дёня.
create database book_repository;
jdbc:postgresql://localhost:5432/book_repository
create table author
(
id int primary key generated by default as identity,
first_name varchar(128) not null,
last_name varchar(128) not null
);
create table book
(
id bigint primary key generated by default as identity,
name varchar(128) not null,
year smallint not null,
pages smallint not null,
author_id int references author (id)
);
INSERT INTO author (first_name, last_name)
VALUES ('Кей', 'Хорстманн'),
('Стивен', 'Кови'),
('Тони', 'Роббинс'),
('Наполеон', 'Хилл'),
('Роберт', 'Кийосаки'),
('Дейл', 'Карнеги');
insert into book (name, year, pages, author_id)
values ('Java. Библиотеку профессионала. Том 1', 2010, 1102, (SELECT id FROM author WHERE last_name = 'Хорстманн')),
('Java. Библиотеку профессионала. Том 2', 2012, 954, (SELECT id FROM author WHERE last_name = 'Хорстманн')),
('Java SE 8. Вводный курс', 2015, 203, (SELECT id FROM author WHERE last_name = 'Хорстманн')),
('7 навыков высокоэффективных людей', 1989, 396, (SELECT id FROM author WHERE last_name = 'Кови')),
('Разбуди в себе исполина', 1991, 576, (SELECT id FROM author WHERE last_name = 'Роббинс')),
('Думай и богатей', 1937, 336, (SELECT id FROM author WHERE Last_name = 'Хилл')),
('Богатый папа, бедный папа', 1997, 352, (SELECT id FROM author WHERE last_name = 'Кийосаки')),
('Квадрант денежного потока', 1998, 368, (SELECT id FROM author WHERE last_name = 'Кийосаки')),
('Как перестать беспокоиться и начать жить', 1948, 368, (SELECT id FROM author WHERE last_name = 'Карнеги')),
('Как завоевывать друзей и оказывать влияние на людей', 1936, 352,
(SELECT id FROM author WHERE last_name = 'Карнеги'));