Форматиране на заявки в SQL

Интерактивен урок: Сортиране, Псевдоними и Филтриране

1. Теория и Примери

В този урок ще разгледаме как да представяме резултатите от нашите заявки по по-четим и подреден начин.

1.1. Псевдоними (Aliases)

Псевдонимите дават временно ново име на таблица или колона, за да стане резултатът по-ясен. Използва се ключовата дума AS.

SELECT first_name AS "Име", last_name AS "Фамилия" 
FROM employees;

Забележка: AS може да се пропусне, но с него кодът е по-четим.

1.2. Сортиране (ORDER BY)

Сортирането подрежда резултатите по определен критерий.

Примерна таблица (employees):
idnamesalary
1Ivan2000
2Maria2500
3Peter1800
Заявка:
SELECT * FROM employees 
ORDER BY salary DESC;
Резултат:
idnamesalary
2Maria2500
1Ivan2000
3Peter1800

1.3. Ограничаване (LIMIT)

Използваме LIMIT, когато искаме да видим само част от резултатите (например "Топ 3 най-богати служители").

SELECT * FROM employees 
ORDER BY salary DESC 
LIMIT 1; -- Връща само най-високата заплата

2. Проверка на знанията

Въпрос: Ако искате да сортирате служителите по заплата от най-високата към най-ниската, коя ключова дума трябва да използвате след името на колоната?

3. Задачи за упражнение (10 броя)

Използвайте базите данни Company (за задачи 1-5) и geography (за задачи 6-10).

Company
1. Служители със заплата над 50 000

Намерете името, фамилията и заплатата на служителите, които получават над 50 000. Сортирайте ги в низходящ ред по заплата.

SELECT first_name, last_name, salary 
FROM employees 
WHERE salary > 50000 
ORDER BY salary DESC;
Company
2. Топ 5 най-добре платени служители

Напишете заявка, която извежда имената на 5-те служители с най-високи заплати.

SELECT first_name, last_name 
FROM employees 
ORDER BY salary DESC 
LIMIT 5;
Company
3. Сортиране по множество критерии

Сортирайте служителите: 1) по заплата (низходящо), 2) по първо име (азбучен ред), 3) по фамилия (низходящо).

SELECT * FROM employees 
ORDER BY salary DESC, first_name ASC, last_name DESC, middle_name ASC;
Company
4. Първите 10 започнати проекта

Намерете първите 10 проекта по начална дата (start_date), след това сортирани по име.

SELECT * FROM projects 
ORDER BY start_date, name 
LIMIT 10;
Company
5. Последните 7 наети служители

Намерете имената и датата на назначаване на последните 7 наети служители (най-новите).

SELECT first_name, last_name, hire_date 
FROM employees 
ORDER BY hire_date DESC 
LIMIT 7;
Geography
6. Всички върхове по височина

Изведете всички върхове (peaks), сортирани от най-високия към най-ниския.

SELECT * FROM peaks 
ORDER BY elevation DESC;
Geography
7. Топ 30 най-населени държави

Изведете името на държавата и населението за 30-те държави с най-голямо население. Сортирайте по население (низходящо), после по държава (възходящо).

SELECT country_name, population 
FROM countries 
ORDER BY population DESC, country_name ASC 
LIMIT 30;
Geography
8. Държави и валути (Euro / Not Euro)

Сортирайте държавите по име по азбучен ред. Изведете име, код на държавата и валута.

SELECT country_name, country_code, 
IF(currency_code = 'EUR', 'Euro', 'Not Euro') AS currency 
FROM countries 
ORDER BY country_name ASC;
Geography
9. Най-високият връх (Limit 1)

Намерете името и височината само на най-високия връх в базата данни.

SELECT peak_name, elevation 
FROM peaks 
ORDER BY elevation DESC 
LIMIT 1;
Geography
10. Държави в Азия

Намерете всички държави от континент 'Asia' (continent_code = 'AS'), сортирани по площ (area_in_sq_km) низходящо. Помнете да използвате WHERE преди ORDER BY.

SELECT * FROM countries 
WHERE continent_code = 'AS' 
ORDER BY area_in_sq_km DESC;