Интерактивен урок: Сортиране, Псевдоними и Филтриране
В този урок ще разгледаме как да представяме резултатите от нашите заявки по по-четим и подреден начин.
Псевдонимите дават временно ново име на таблица или колона, за да стане резултатът по-ясен. Използва се ключовата дума AS.
SELECT first_name AS "Име", last_name AS "Фамилия"
FROM employees;
Забележка: AS може да се пропусне, но с него кодът е по-четим.
Сортирането подрежда резултатите по определен критерий.
ASC (Ascending) - възходящ ред (по подразбиране). От А до Я или от 0 до 9.DESC (Descending) - низходящ ред. От Я до А или от 9 до 0.| id | name | salary |
|---|---|---|
| 1 | Ivan | 2000 |
| 2 | Maria | 2500 |
| 3 | Peter | 1800 |
SELECT * FROM employees
ORDER BY salary DESC;
Резултат:
| id | name | salary |
|---|---|---|
| 2 | Maria | 2500 |
| 1 | Ivan | 2000 |
| 3 | Peter | 1800 |
Използваме LIMIT, когато искаме да видим само част от резултатите (например "Топ 3 най-богати служители").
SELECT * FROM employees
ORDER BY salary DESC
LIMIT 1; -- Връща само най-високата заплата
Въпрос: Ако искате да сортирате служителите по заплата от най-високата към най-ниската, коя ключова дума трябва да използвате след името на колоната?
Използвайте базите данни Company (за задачи 1-5) и geography (за задачи 6-10).
Намерете името, фамилията и заплатата на служителите, които получават над 50 000. Сортирайте ги в низходящ ред по заплата.
SELECT first_name, last_name, salary
FROM employees
WHERE salary > 50000
ORDER BY salary DESC;
Напишете заявка, която извежда имената на 5-те служители с най-високи заплати.
SELECT first_name, last_name
FROM employees
ORDER BY salary DESC
LIMIT 5;
Сортирайте служителите: 1) по заплата (низходящо), 2) по първо име (азбучен ред), 3) по фамилия (низходящо).
SELECT * FROM employees
ORDER BY salary DESC, first_name ASC, last_name DESC, middle_name ASC;
Намерете първите 10 проекта по начална дата (start_date), след това сортирани по име.
SELECT * FROM projects
ORDER BY start_date, name
LIMIT 10;
Намерете имената и датата на назначаване на последните 7 наети служители (най-новите).
SELECT first_name, last_name, hire_date
FROM employees
ORDER BY hire_date DESC
LIMIT 7;
Изведете всички върхове (peaks), сортирани от най-високия към най-ниския.
SELECT * FROM peaks
ORDER BY elevation DESC;
Изведете името на държавата и населението за 30-те държави с най-голямо население. Сортирайте по население (низходящо), после по държава (възходящо).
SELECT country_name, population
FROM countries
ORDER BY population DESC, country_name ASC
LIMIT 30;
Сортирайте държавите по име по азбучен ред. Изведете име, код на държавата и валута.
SELECT country_name, country_code,
IF(currency_code = 'EUR', 'Euro', 'Not Euro') AS currency
FROM countries
ORDER BY country_name ASC;
Намерете името и височината само на най-високия връх в базата данни.
SELECT peak_name, elevation
FROM peaks
ORDER BY elevation DESC
LIMIT 1;
Намерете всички държави от континент '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;