-
Урок 1. 00:10:161. Введение в базы данных
-
Урок 2. 00:06:582. Установка программного обеспечения
-
Урок 3. 00:07:373. Подключение к базам данных
-
Урок 4. 00:12:034. DDL & DML
-
Урок 5. 00:08:035. Создание таблиц
-
Урок 6. 00:12:226. Операция Insert. Constraints
-
Урок 7. 00:10:427. Автогенерируемые идентификаторы
-
Урок 8. 00:11:038. Создание запросов - SELECT. Сортировка выборки - ORDER BY
-
Урок 9. 00:09:349. Фильтрация выборки - WHERE
-
Урок 10. 00:08:4210. Агрегирующие и встроенные функции
-
Урок 11. 00:08:3911. Внешний ключ - FOREIGN KEY
-
Урок 12. 00:06:5212. Объединение запросов - UNION
-
Урок 13. 00:12:0613. Подзапросы
-
Урок 14. 00:09:1914. Удаление строк - DELETE
-
Урок 15. 00:06:2615. Обновление строк - UPDATE
-
Урок 16. 00:30:3816. Практика. Часть 1
-
Урок 17. 00:07:5417. Нормализация баз данных. Теория
-
Урок 18. 00:09:5318. Нормальные формы. 1НФ, 2НФ, 3НФ
-
Урок 19. 00:10:2219. Связи между таблицами
-
Урок 20. 00:11:2520. Соединение таблиц. INNER & CROSS JOIN
-
Урок 21. 00:08:4421. Соединение таблиц. OUTER JOINs. LEFT, RIGHT, FULL
-
Урок 22. 00:11:3822. Группировки запросов. GROUP BY & HAVING
-
Урок 23. 00:13:0023. Оконные функции. Window functions
-
Урок 24. 00:08:3624. Представление. View
-
Урок 25. 00:06:1725. Изменение таблиц. ALTER
-
Урок 26. 00:54:2426. Практика. Часть 2
-
Урок 27. 00:09:5027. Теория множеств. UNION, INTERSECT, EXCEPT
-
Урок 28. 00:12:3928. Индексы. B-Tree. Часть 1
-
Урок 29. 00:12:4629. Индексы. B-Tree. Часть 2
-
Урок 30. 00:16:5030. План выполнения запросов. Основы
-
Урок 31. 00:23:0231. План выполнения запросов. Индексы
-
Урок 32. 00:19:1732. План выполнения запросов. JOINs
-
Урок 33. 00:24:0633. Работа с СУБД через командную строку
-
Урок 34. 00:16:4334. Транзакции. Теория
-
Урок 35. 00:16:0935. Транзакции. Практика
-
Урок 36. 00:12:0236. Триггеры
-
Урок 37. 00:16:0537. DWH. BigQuery
-
Урок 38. 00:15:2438. NoSQL. Теорема CAP
-
Урок 39. 00:04:1839. Заключение. Путь развития
- Категории
- Источники
- Все курсы
- Разделы
- Книги
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 = 'Карнеги'));