Фільтрація даних у SQL за допомогою WHERE, ORDER BY та GROUP BY

У SQL фільтрація та організація даних є важливими операціями, які дозволяють користувачам отримувати значущу інформацію з баз даних. Цей посібник охоплює три основні SQL-клаузи — WHERE, ORDER BY та GROUP BY з поясненнями, прикладами та практичними порадами.

pic

1. Фільтрація даних: чому це важливо

Працюючи з базами даних, ми часто маємо справу з великими наборами даних. Однак не всі дані є релевантними для кожного запиту. Фільтрація допомагає зосередитись на конкретних підмножинах даних, забезпечуючи ефективне і змістовне отримання інформації.

Переваги фільтрації:

  • Отримувати лише необхідні дані, а не весь набір даних.
  • Організувати дані для кращого читання та аналізу.
  • Агрегувати та узагальнювати дані для прийняття рішень.

2. Клаузула WHERE

Клаузула WHERE використовується для фільтрації рядків за певною умовою. Це одна з найбільш часто використовуваних SQL-клауз для звуження результатів.

Синтаксис:

SELECT column1, column2, ...  
FROM table_name  
WHERE condition;

Приклади:

1. Фільтрація за однією умовою

  • Отримати всіх студентів старших за 25 років
SELECT * FROM students  
WHERE age > 25;

2. Об'єднання умов за допомогою логічних операторів

  • Використовуйте AND, щоб вимагати виконання кількох умов: Отримати студентів старших за 25 років та з оцінками понад 80
SELECT * FROM students  
WHERE age > 25 AND grade > 80;
  • Використовуйте OR, щоб дозволити виконання хоча б однієї з кількох умов: Отримати студентів старших за 25 років або з оцінками понад 80
SELECT * FROM students  
WHERE age > 25 OR grade > 80;

3. Фільтрація за допомогою порівняння з шаблоном: використовуйте оператор LIKE для часткових збігів

SELECT * FROM students  
WHERE name LIKE 'A%'; -- Імена, що починаються з 'A'

Основні моменти

  • Використовуйте клаузулу WHERE на початку запиту, щоб зменшити обсяг даних для обробки.
  • Ефективно комбінуйте умови за допомогою логічних операторів, таких як AND, OR та NOT.

3. Клаузула ORDER BY

Клаузула ORDER BY використовується для сортування результатів запиту в порядку зростання (за замовчуванням) або спадання.

Синтаксис:

SELECT column1, column2, ...  
FROM table_name  
ORDER BY column1 [ASC|DESC], column2 [ASC|DESC];

Приклади:

  • Сортування за однією колонкою: Отримати всіх студентів, відсортованих за оцінками в порядку зростання
SELECT * FROM students  
ORDER BY grade;
  • Сортування у зворотному порядку: Отримати всіх студентів, відсортованих за оцінками в порядку спадання
SELECT * FROM students  
ORDER BY grade DESC;
  • Сортування за кількома колонками: Отримати всіх студентів, відсортованих спочатку за віком (за зростанням), а потім за оцінками (за спаданням)
SELECT * FROM students  
ORDER BY age ASC, grade DESC;

Основні моменти

  • Використовуйте ORDER BY для кращого візуалізування даних та покращення їх читабельності.
  • Сортування за кількома колонками дозволяє створювати ієрархічну організацію результатів.

4. Клаузула GROUP BY

Клаузула GROUP BY використовується для групування рядків, які мають однакові значення в зазначених колонках. Часто використовується разом з агрегуючими функціями, такими як SUM(), AVG(), COUNT(), MAX() та MIN().

Синтаксис:

SELECT column1, aggregate_function(column2)  
FROM table_name  
GROUP BY column1;

Приклади:

  • Обчислення агрегованих значень за групами: Знайти середній бал для кожної вікової групи
SELECT age, AVG(grade) AS average_grade  
FROM students  
GROUP BY age;
  • Підрахунок рядків за групами: Порахувати кількість студентів у кожній віковій групі
SELECT age, COUNT(*) AS total_students  
FROM students  
GROUP BY age;
  • Фільтрація груп за допомогою HAVING: Використовуйте клаузулу HAVING для фільтрації агрегованих даних та отримання вікових груп, де середній бал більший за 80
SELECT age, AVG(grade) AS average_grade  
FROM students  
GROUP BY age  
HAVING AVG(grade) > 80;

Основні моменти

  • Клаузула GROUP BY використовується для агрегації даних в осмислені групи.
  • Клаузула HAVING фільтрує агреговані результати (аналогічно клаузулі WHERE для рядків).
    Комбінування WHERE, ORDER BY та GROUP BY

SQL-запити часто комбінують ці клаузи для виконання більш складних операцій.

Приклад:

Отримати середній бал для вікових груп, де оцінки більші за 75, і відсортувати результати за середнім балом у порядку спадання

SELECT age, AVG(grade) AS average_grade  
FROM students  
WHERE grade > 75  
GROUP BY age  
ORDER BY average_grade DESC;

6. Практичні випадки використання

  • Аналіз даних: Використовуйте GROUP BY з агрегуючими функціями для узагальнення даних для звітів.
  • Очищення даних: Використовуйте WHERE для фільтрації непотрібних рядків.
  • Представлення даних: Використовуйте ORDER BY для організації даних для інформаційних панелей або візуалізацій.

7. Типові помилки

Невірна клаузула WHERE

  • Використання умов, які не відповідають типу даних колонки.
  • Приклад: Порівняння рядка з числом.

Використання ORDER BY без розуміння поведінки за замовчуванням

  • Сортування за замовчуванням відбувається у порядку зростання, якщо явно не зазначено DESC.

Групування без агрегації

  • Використання GROUP BY без агрегуючої функції призводить до непередбачуваних результатів.

8. Підсумок

  • Клаузула WHERE фільтрує рядки за умовами.
  • Клаузула ORDER BY сортує результати запиту в порядку зростання або спадання.
  • Клаузула GROUP BY агрегує рядки в групи для узагальнення.

Перекладено з: Filtering Data in SQL using WHERE, ORDER BY, and GROUP BY

Leave a Reply

Your email address will not be published. Required fields are marked *