Сортировка данных.md 9.1 KB

select * from author order by name;

-- Сортировка по возрастанию
select * from author order by author_id
select * from author order by author_id asc;

-- Сортировка по убыванию
select * from author order by author_id desc;

-- Сортировка по author_id в порядке убывания (с указанием порядка null)
select author_id, name, description
	from author
order by 1 nulls last;
-- Временная таблица для сортировка
create temp table author_tmp(
	author_id bigint generated always as identity primary key,
	first_name varchar(150) not null,
	last_name varchar(150) not null
);

insert into author_tmp (first_name, last_name) values
	('Михаил', 'Шишкин'),
	('Михаил', 'Веллер'),
	('Михаил', 'Шолохов'),
	('Михаил', 'Зощенко'),
	('Михаил', 'Булгаков'),
	('Александр', 'Беляев'),
	('Александр', 'Пушкин'),
	('Лусиану', 'Рамальо');

-- Ну и теперь сортировка
select * from author_tmp order by first_name;
select * from author_tmp order by first_name, last_name;
select * from author_tmp order by first_name, last_name desc;

~={yellow}Работа с данным, созданными в SQL-запросе=~

select * from (values ('Яблоко'), ('Апельсин'), ('Банан'));

-- сортировка просто по номеру колонки
select * from (values ('Яблоко'), ('Апельсин'), ('Банан')) t order by 1;

-- даём колонке имя, но сортировка по номеру колонки
select * from (values ('Яблоко'), ('Апельсин'), ('Банан')) t(fruit) order by 1;

-- даём колонке имя, сортировка по этому имени
select * from (
    values
        ('Яблоко'),
        ('Апельсин'),
        ('Банан')
) as t (fruit) order by fruit;

-- добавляем ещё одну колонку просто для примера
select * from (
    values
        ('Яблоко', 100),
        ('Апельсин', 200),
        ('Банан', 150)
) as t (fruit, price)
order by fruit;

~={yellow}Задания на сортировку с базой птиц=~

select * from family order by family_id desc;

select * from family order by description nulls first;
select * from family order by description nulls last;
select family_name from family where family_name like 'Д%' order by family_name;

~={yellow}Ограничение количества результатов запроса=~

-- Верунь количество книг
select count(*) from book;

-- Вернуть 10 записей
select book_id, name, author_id
from book
order by name limit 10;

-- Вернуть сдедующие 10 записей (параметр offset)
select book_id, name, author_id
from book
order by name limit 10 offset 10;
--- Наполняем базу данных птиц
insert into species (species_name, genus_id, description, average_length, average_weight, primary_color) values 
('Большая синица',
1,
'Обычная птица из семейства синицевых, обитающая в лесах и садах.',
14,
18,
'жёлтый'),
('Синица лазоревка',
1,
'Маленькая яркая птица из семейства синицевых.',
12,
11,
'голубой и жёлтый'),
('Синица обыкновенная',
1,
'Распространённый вид синиц, обитающий в лесах и парках.',
13,
14,
'зеленоватый'),
('Гаичка болотная',
2,
'Маленькая птица из семейства синицевых, обитающая в болотистых районах.',
12,
13,
'серый'),
('Гаичка буроголовая',
2,
'Маленькая птица с коричневой головой.',
11,
12,
'коричневый и серый'),
('Гаичка черноголовая',
2,
'Маленькая птица с черной головой.',
10,
11,
'чёрный и серый'),
('Ворон обыкновенный',
3,
'Крупная птица из семейства врановых, обитающая в различных средах обитания.',
64,
1500,
'чёрный'),
('Грач',
3,
'Птица из семейства врановых с характерным внешним видом.',
46,
400,
'чёрный'),
('Клушица',
3,
'Птица из семейства врановых, обитающая в горах.',
60,
1200,
'чёрный'),
('Сорока обыкновенная',
4,
'Птица из семейства врановых с характерной черно-белой окраской.',
45,
200,
'чёрный и белый'),
('Сорока чернокрылая',
4,
'Птица с черными крыльями и белым телом.',
44,
190,
'чёрный и белый'),
('Сорока голубая',
4,
'Птица с голубыми крыльями и хвостом.',
43,
180,
'голубой и белый'),
('Дрозд рябинник',
5,
'Певчая птица из семейства дроздовых, обитающая в лесах и садах.',
25,
100,
'коричневый'),
('Дрозд певчий',
5,
'Певчая птица с мелодичным голосом.',
23,
90,
'коричневый и белый'),
('Дрозд черный',
5,
'Птица с черным оперением и мелодичным пением.',
24,
95,
'чёрный'),
('Дрозд белобровик',
5,
'Птица с белыми бровями и ярким оперением.',
22,
85,
'коричневый и белый'),
('Дрозд пересмешник',
5,
'Птица, способная имитировать звуки других птиц.',
26,
110,
'серый и коричневый'),
('Синица белая',
1,
'Белая синица, обитающая в северных регионах.',
15,
20,
'белый и серый'),
('Синица сибирская',
1,
'Птица, обитающая в Сибири, с ярким оперением.',
16,
21,
'жёлтый и зелёный'),
('Синица черноголовая',
1,
'Синица с черной головой и белыми щеками.',
14,
19,
'чёрный и белый'),
('Гаичка хохлатая',
2,
'Гаичка с характерным хохолком на голове.',
12,
14,
'серый и чёрный'),
('Гаичка горная',
2,
'Птица, обитающая в горных районах.',
11,
13,
'коричневый и серый'),
('Гаичка рыжеголовая',
2,
'Гаичка с рыжей головой и серым телом.',
13,
15,
'рыжий и серый'),
('Ворон пустынный',
3,
'Ворон, обитающий в пустынях.',
62,
1400,
'чёрный'),
('Ворон северный',
3,
'Ворон, обитающий в северных регионах.',
63,
1450,
'чёрный'),
('Ворон лесной',
3,
'Ворон, предпочитающий лесные районы.',
61,
1350,
'чёрный'),
('Сорока зеленая',
4,
'Сорока с зеленым оттенком в оперении.',
46,
210,
'зелёный и белый'),
('Сорока крапчатая',
4,
'Сорока с крапчатым оперением.',
44,
190,
'чёрный и белый'),
('Сорока длиннохвостая',
4,
'Сорока с длинным хвостом.',
47,
220,
'чёрный и белый'),
('Дрозд лесной',
5,
'Дрозд, предпочитающий лесные районы.',
25,
100,
'коричневый'),
('Дрозд полевой',
5,
'Дрозд, обитающий на полях и лугах.',
24,
95,
'коричневый и белый'),
('Дрозд луговой',
5,
'Дрозд, предпочитающий луговые районы.',
23,
90,
'коричневый'),
('Дрозд болотный',
5,
'Дрозд, обитающий в болотистых районах.',
26,
110,
'серый и коричневый'),
('Дрозд красногрудый',
5,
'Дрозд с ярко-красной грудью.',
27,
115,
'красный и коричневый'),
('Синица пестрая',
1,
'Синица с пестрым оперением.',
14,
18,
'жёлтый и чёрный'),
('Синица зелёная',
1,
'Синица с зелёным оттенком в оперении.',
15,
20,
'зелёный и жёлтый'),
('Синица красноголовая',
1,
'Синица с красной головой и серым телом.',
14,
19,
'красный и серый'),
('Гаичка зеленоголовая',
2,
'Гаичка с зеленым оттенком в оперении.',
12,
13,
'зелёный и серый'),
('Гаичка сероголовая',
2,
'Гаичка с серой головой и белым телом.',
11,
12,
'серый и белый');