Задание на сортировку данных при выборке из таблицы

В базе данных есть не сортированная таблица CITIES со списком всех городов РФ, состоящая из двух колонок:
————————
| ID | CITY |
————————
В колонке CITY записаны названия городов РФ в случайном порядке. В колонке ID содержатся некие уникальные идентификаторы городов.
Напишите SQL запрос, который вернет из таблицы CITIES список всех городов РФ, отсортированных в следующем порядке:
1. Первое место — Москва
2. Второе место — Санкт-Петербург
3. Все последующие места — остальные города РФ, отсортированные в алфавитном порядке от А до Я

Создаём таблицу

create table MIRAVILD.CITIES
(ID integer, CITY VARCHAR2(256), constraint pk_id primary key (id)) organization index tablespace miravild_data;

Добавляем тестовые данные

INSERT INTO miravild.cities c
(c.id, c.city)
VALUES
(1, 'Мурманск');

INSERT INTO miravild.cities c
(c.id, c.city)
VALUES
(2, 'Севастополь');

INSERT INTO miravild.cities c
(c.id, c.city)
VALUES
(3, 'Семферополь');

INSERT INTO miravild.cities c
(c.id, c.city)
VALUES
(4, 'Москва');

INSERT INTO miravild.cities c
(c.id, c.city)
VALUES
(5, 'Санкт-Петербург');

INSERT INTO miravild.cities c
(c.id, c.city)
VALUES
(6, 'Архангельск');

INSERT INTO miravild.cities c
(c.id, c.city)
VALUES
(7, 'Саранск');

INSERT INTO miravild.cities c
(c.id, c.city)
VALUES
(8, 'Самара');

INSERT INTO miravild.cities c
(c.id, c.city)
VALUES
(9, 'Пенза');

INSERT INTO miravild.cities c
(c.id, c.city)
VALUES
(10, 'Курск');

INSERT INTO miravild.cities c
(c.id, c.city)
VALUES
(11, 'Астрахань');

INSERT INTO miravild.cities c
(c.id, c.city)
VALUES
(12, 'Ахтубинск');

COMMIT WORK;
/

Вариант запроса

SELECT c.city
FROM miravild.cities c
ORDER BY CASE
WHEN c.city = 'Москва' THEN
1
WHEN c.city = 'Санкт-Петербург' THEN
2
END,
c.city ASC;

Tags: ,

Leave a Reply

You must be logged in to post a comment.