Модуль 13

Фільтрація, сортування та агрегації

Ось готовий урок, створений у стилі CS50, спеціально за твоїм запитом.


🎓 УРОК: Фільтрація, Сортування та Агрегації

(Або: Як знайти голку в копиці даних і перетворити її на статистику)


1. 🔥 Вступ: проблема та мотивація

Уявіть, що ви зайшли до гігантської бібліотеки Конгресу. Там мільйони книг. Але є одна проблема: всі книги скинуті у велику купу посеред кімнати. Жодного алфавітного порядку, жодних жанрів.

Я прошу вас: "Принесіть мені, будь ласка, всі книги про космос, видані після 2000 року, і скажіть, скільки вони важать разом".

Що ви відчуєте? Паніку. Вам доведеться перебрати кожну книгу. Це довго, це дорого, це неефективно.

А тепер уявіть, що у вас є магічний фільтр. Ви клацаєте пальцями — і зникають усі книги, крім тих, що про космос. Клацаєте вдруге — вони шикуються за роком видання. Клацаєте втретє — вони самі стрибають на ваги й показують суму.

В програмуванні та роботі з даними (SQL, Python Pandas, Excel) ми не перебираємо дані вручну. Ми використовуємо Фільтрацію, Сортування та Агрегацію.

Питання до вас: Як ви думаєте, що Netflix робить, коли показує вам "Топ-10 фільмів в Україні"? Він не переглядає історію переглядів кожного користувача в реальному часі вручну. Він робить саме ці три речі.

Без цих навичок ваші дані — це просто сміття. З ними — це інформація.


2. 🧠 Теоретична база (без сухої академічності)

Давайте розберемо це "під капотом". Уявіть, що ваші дані — це таблиця (як в Excel).

1. Фільтрація (Filtering)

Це сито. Ви кажете комп’ютеру: "Я хочу бачити ТІЛЬКИ ті рядки, які відповідають умові X". * Як це працює: Комп’ютер біжить по кожному рядку і питає: "Ти відповідаєш умові?". * Якщо ТАК — залишає. * Якщо НІ — викидає з результату (але не видаляє з бази!). * Ключове слово в SQL: WHERE

2. Сортування (Sorting)

Це впорядкування. Люди люблять порядок, комп’ютерам байдуже, але нам зручніше читати від А до Я, або від найдешевшого до найдорожчого. * Як це працює: Комп’ютер порівнює значення. Це затратна операція. Сортувати мільйон записів довше, ніж просто знайти один. * Ключове слово в SQL: ORDER BY

3. Агрегація (Aggregation)

Це "сплющення" даних. Ви берете 1000 рядків і перетворюєте їх на одне число. * Наприклад: сума всіх продажів, середня оцінка фільму, кількість користувачів. * Ви втрачаєте деталі (хто саме купив), але отримуєте загальну картину (скільки заробили). * Ключові слова: COUNT (кількість), SUM (сума), AVG (середнє), MAX/MIN.

☝️ Що треба запам’ятати залізно: Порядок дій має значення! Спочатку ми фільтруємо (щоб працювати з меншою кількістю даних), а вже потім сортуємо чи агрегуємо. Це економить ресурси процесора.


3. 🧪 Приклади (від простого до реального)

Уявимо, що ми розробники інтернет-магазину кросівок SneakerWorld. У нас є таблиця orders (замовлення) з колонками: id, model (модель), price (ціна), status (статус).

Приклад 1: Просто подивитись (Фільтрація)

Шеф каже: "Покажи всі замовлення, які вже виконані (completed)".

Що ми очікуємо? Список, де в колонці status всюди написано 'completed'.

SELECT *
FROM orders
WHERE status = 'completed';

Пояснення: Ми взяли "сито" і залишили тільки виконані замовлення. Все просто.


Приклад 2: Навести лад (Сортування)

Шеф каже: "Окей, а тепер покажи мені найдорожчі продані кросівки зверху списку".

Що ми очікуємо? Той самий список, але тепер ціна йде від 5000 грн до 500 грн.

SELECT *
FROM orders
WHERE status = 'completed'
ORDER BY price DESC; -- DESC означає descending (спадання)

Пояснення: Бачите? Ми спочатку відфільтрували (WHERE), а потім те, що лишилося, посортували (ORDER BY).


Приклад 3: Бізнес-аналітика (Агрегація)

Шеф питає: "Скільки грошей ми заробили на моделі 'Air Jordan'?".

Що ми очікуємо? Нам не треба список. Нам треба одне число.

SELECT SUM(price)
FROM orders
WHERE model = 'Air Jordan';

Пояснення: 1. Комп’ютер знайшов усі рядки з 'Air Jordan'. 2. Взяв колонку price з цих рядків. 3. Склав їх разом (SUM). Вуаля! Ви щойно зробили роботу фінансового аналітика.


4. 🛠 Практична частина

Припустимо, у вас є таблиця users: name (ім'я), age (вік), city (місто), balance (гроші на рахунку).

Виконай ці завдання (можна подумки або на папері):

  1. 🔹 Копі-паст: Напиши запит, щоб знайти всіх користувачів із міста "Kyiv".
  2. 🔹 Зміна умов: Зміни попередній запит так, щоб знайти користувачів з "Kyiv", яким більше 18 років. (Підказка: використовуй AND).
  3. 🔹 Виправ помилку: Студент написав код, щоб знайти найбагатшого користувача, але отримав найбіднішого. Що не так? SELECT * FROM users ORDER BY balance ASC; (ASC — за зростанням).
  4. 🔹 Реальна задача: Маркетологи хочуть дізнатися середній вік наших клієнтів зі Львова. Яку функцію агрегації ти використаєш? (SUM, COUNT чи AVG?)
  5. 🔹 Міні-кейс: Тобі треба дізнатися, скільки всього користувачів мають нульовий баланс. Напиши логіку цього запиту.

5. 💡 Мислення як у розробника

Послухайте уважно. Новачки часто роблять одну й ту саму помилку: вони намагаються витягнути всі дані на свій комп’ютер і сортувати їх у своїй програмі (наприклад, у циклі на Python чи JS).

Як не треба: Завантажити 1 мільйон замовлень, а потім кодом шукати суму. ✅ Як думає профі: "Нехай база даних зробить брудну роботу". Бази даних оптимізовані для цього роками.

Порада з практики: Завжди запитуйте себе: "Чи потрібні мені всі ці дані?". Якщо вам треба лише кількість користувачів, не завантажуйте їхні імена та фотографії. Просто попросіть COUNT. Це економить пам'ять, трафік і гроші компанії.

І ще одне: Null. У базах даних порожнє місце — це не нуль і не порожній рядок. Це "ніщо" (NULL). Сортування та агрегація з NULL може дати несподівані результати. Будьте пильні!


6. 🧩 Підсумок

Отже, що ми сьогодні зробили? Ми перетворили хаос на порядок.

  1. Фільтрація дозволяє фокусуватися на важливому.
  2. Сортування допомагає бачити пріоритети.
  3. Агрегація перетворює масив даних на бізнес-показники.

Тепер ви вмієте відповідати на питання "Скільки?", "Хто найкращий?" і "Де наші гроші?".

👀 Тизер наступного уроку: Зараз ми працювали з однією таблицею. Але в реальному житті дані розкидані: користувачі в одній таблиці, а їхні замовлення — в іншій. Як їх з'єднати, щоб дізнатися, хто саме купив ті 'Air Jordan'? На наступному уроці ми поговоримо про магію JOIN (з’єднання таблиць). Це буде легендарно.

До зустрічі! 💻