Как отсортировать данные в SQL, Python и командной строке Linux?

Ответ

SQL: Используйте предложение ORDER BY в запросе SELECT. Указывайте столбец и направление сортировки (ASC — по возрастанию, DESC — по убыванию).

SELECT name, salary FROM employees ORDER BY salary DESC;
SELECT * FROM products ORDER BY category ASC, price DESC;

Python:

  • Функция sorted(): Возвращает новый отсортированный список, не изменяя исходный.
    numbers = [3, 1, 4, 2]
    sorted_numbers = sorted(numbers)  # [1, 2, 3, 4]
    sorted_desc = sorted(numbers, reverse=True)  # [4, 3, 2, 1]
  • Метод .sort(): Сортирует список на месте (изменяет оригинал) и возвращает None.
    numbers.sort()  # Теперь numbers = [1, 2, 3, 4]

Командная строка Linux: Используйте утилиту sort.

# Базовая сортировка строк файла
sort file.txt
# Сортировка по числовому значению (второе поле)
sort -n -k2 data.txt
# Сортировка в обратном порядке
sort -r file.txt
# Удаление дубликатов после сортировки
sort -u file.txt

Важное замечание для JavaScript: Метод array.sort() по умолчанию сортирует элементы как строки в лексикографическом порядке. Для сортировки чисел нужна функция сравнения:

// Неправильно для чисел:
[10, 2, 1].sort(); // [1, 10, 2]
// Правильно для чисел:
[10, 2, 1].sort((a, b) => a - b); // [1, 2, 10]

Ответ 18+ 🔞

Э, слушай, а вот сортировка, блядь! Ну, это когда у тебя всё по полочкам, по порядку, а не как попало, как у нас в стране, блядь.

Вот смотри, в SQL, например, чтоб не было бардака, есть ORDER BY. Хочешь, чтобы дядя начальник, который получает овердохуища, был первым в списке? Легко, блядь!

SELECT name, salary FROM employees ORDER BY salary DESC;

Вот DESC — это чтоб по убыванию, от жирного к тощему. А ASC — наоборот, от нищеброда к олигарху, по возрастанию. Можно и по двум полям сразу, типа сначала по категории, а внутри категории — от дорогого к дешёвому, чтоб сразу видно было, где на нас наебали.

SELECT * FROM products ORDER BY category ASC, price DESC;

А в Python, блядь, тут два зверя. Один — sorted(), он культурный, не трогает твой исходный список, а делает тебе новый, отсортированный. Как будто ты пришёл в гости и не жрёшь из чужой тарелки, а попросил свою.

numbers = [3, 1, 4, 2]
sorted_numbers = sorted(numbers)  # Вот, новый список [1, 2, 3, 4], а старый numbers как был мудаком, так и остался

А второй — метод .sort(). Это уже наш, родной, беспредельщик. Он приходит в твой список и начинает там всё переставлять, как ему вздумается. Исходник меняет нахуй, а сам возвращает None, типа «чё смотришь, я всё сделал».

numbers.sort()  # Всё, приехали. Теперь numbers = [1, 2, 3, 4]. Исходного мудака больше нет.

В линуксе, в командной строке, своя банда — утилита sort. Хочешь файл по алфавиту? Пожалуйста, блядь.

sort file.txt

Хочешь по числам во втором столбце? Да не вопрос, ёпта!

sort -n -k2 data.txt

А теперь, внимание, ёперный театр! JavaScript, блядь! Вот где подстава! Его метод array.sort() по умолчанию — это просто пиздец, он всё сортирует как строки. Представь: [10, 2, 1]. Нормальный человек скажет: 1, 2, 10. А JS тебе выдаст: [1, 10, 2]. Потому что '10' как строка идёт раньше '2'. Ну, пидарас шерстяной!

// Вот так НЕ НАДО, это пиздец:
[10, 2, 1].sort(); // Получишь [1, 10, 2] и волнение ебать
// А вот так НАДО, передай ему функцию, чтоб мозги включил:
[10, 2, 1].sort((a, b) => a - b); // Вот теперь [1, 2, 10], красота!

Вот так вот, блядь. Главное — не перепутай, где что сортирует, а то получишь бардак, хуй с горы, и будешь потом искать, где у тебя что лежало.