← Назад к вопросам

Какой командой соритровал значения?

1.0 Junior🔥 201 комментариев
#Базы данных и SQL

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Сортировка в SQL и командной строке

Команды сортировки в SQL

В SQL для сортировки значений используется оператор ORDER BY. Он указывается в конце запроса SELECT и определяет порядок возврата строк.

Базовый синтаксис:

SELECT column1, column2
FROM table_name
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC];
  • ASC (по умолчанию) — сортировка по возрастанию (от A до Z, от 0 до 9).
  • DESC — сортировка по убыванию (от Z до A, от 9 до 0).

Примеры сортировки:

-- Сортировка по одной колонке по возрастанию
SELECT * FROM users ORDER BY last_name;

-- Сортировка по убыванию
SELECT product_name, price FROM products ORDER BY price DESC;

-- Сортировка по нескольким колонкам (сначала по стране, затем по городу)
SELECT first_name, last_name, city, country
FROM employees
ORDER BY country ASC, city ASC;

-- Сортировка по выражению или порядковому номеру колонки в SELECT
SELECT first_name, last_name, salary * 1.1 as new_salary
FROM employees
ORDER BY 3 DESC; -- Сортировка по 3-ей колонке в результате (new_salary)

Особые случаи:

-- Сортировка NULL значений (по умолчанию они считаются наибольшими)
SELECT name, bonus
FROM employees
ORDER BY bonus NULLS FIRST; -- или NULLS LAST

-- Сортировка по условию CASE (кастомный порядок)
SELECT order_id, status
FROM orders
ORDER BY CASE status
    WHEN 'Critical' THEN 1
    WHEN 'High' THEN 2
    WHEN 'Medium' THEN 3
    WHEN 'Low' THEN 4
    ELSE 5
END;

Команды сортировки в командной строке (Linux/Unix)

В терминале для сортировки текстовых данных из файлов или потоков используется утилита sort.

Базовое использование:

# Сортировка строк файла в лексикографическом порядке
sort filename.txt

# Сортировка вывода другой команды
ps aux | sort -k 3  # Сортировка процессов по 3-ему полю (CPU)

# Числовая сортировка
sort -n numbers.txt

# Сортировка в обратном порядке
sort -r data.txt

Ключевые опции утилиты sort:

  • -n — числовая сортировка (по умолчанию лексикографическая, т.е. '10' будет перед '2').
  • -r — обратный порядок (по убыванию).
  • -k N — сортировка по конкретному полю (колонке). Нумерация с 1.
  • -t ',' — указание разделителя полей (по умолчанию пробел/табуляция).
  • -u — вывод только уникальных строк (аналог sort | uniq).
  • -f — игнорирование регистра (case-insensitive).
  • -M — сортировка по названиям месяцев (JAN, FEB, ...).

Сложные примеры:

# Сортировка CSV-файла по 2-ой колонке как числам
sort -t ',' -k 2,2n data.csv

# Сортировка по 3-ему полю, затем по 1-ому
sort -k 3,3 -k 1,1 report.txt

# Просмотр ТОП-5 самых больших файлов в директории
du -sh * | sort -hr | head -5
# -h правильно сортирует "человеко-читаемые" размеры (1K, 2M, 3G)

Практическое применение в тестировании

Как QA Engineer, я часто использую сортировку для:

  1. Верификации данных в БД после выполнения операций.
  2. Анализа логов — поиск ошибок, временных меток.
  3. Подготовки тестовых данных в определённом порядке.
  4. Сравнения результатов — сортировка вывода двух систем для поэлементного сравнения.
  5. Работы с API — проверка сортировки в ответах endpoints с параметрами ?sort=field_name.

Важно помнить:

  • В SQL сортировка больших результатов (ORDER BY без LIMIT) может быть ресурсоёмкой операцией.
  • В командной строке sort по умолчанию чувствителен к регистру и использует лексикографическую сортировку, что для чисел даст неожиданный результат без флага -n.
  • Для сложной сортировки в Bash может потребоваться комбинация sort, awk, cut и других утилит.
Какой командой соритровал значения? | PrepBro