> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/bazy-dannykh/operacii-filtracii.md).

# Операции фильтрации

Операции **фильтрации** в SQL позволяют выбирать только те строки из таблицы, которые удовлетворяют определённым условиям. Это делается с помощью ключевого слова `WHERE`.

***

#### 1️⃣ Основной синтаксис

```sql
SELECT колонка1, колонка2
FROM таблица
WHERE условие;
```

***

#### 2️⃣ Примеры условий

1. **Сравнение значений**

```sql
SELECT * FROM employees
WHERE salary > 5000;
```

→ Сотрудники с зарплатой больше 5000.

2. **Равенство/неравенство**

```sql
SELECT * FROM products
WHERE category = 'Electronics';
```

3. **Диапазон значений (`BETWEEN`)**

```sql
SELECT * FROM orders
WHERE order_date BETWEEN '2025-01-01' AND '2025-03-31';
```

4. **Список значений (`IN`)**

```sql
SELECT * FROM employees
WHERE department_id IN (1, 2, 3);
```

5. **Шаблоны (`LIKE`)**

```sql
SELECT * FROM customers
WHERE name LIKE 'A%';
```

→ Имена, начинающиеся на "A".

6. **NULL-значения**

```sql
SELECT * FROM orders
WHERE shipped_date IS NULL;
```

7. **Логические операторы (`AND`, `OR`, `NOT`)**

```sql
SELECT * FROM employees
WHERE department_id = 1 AND salary > 3000;
```

***

#### 3️⃣ Фильтрация после группировки

Для фильтрации по агрегатам используется `HAVING`, а не `WHERE`:

```sql
SELECT department_id, COUNT(*) AS emp_count
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;
```

***

🔑 **Итого:**

* `WHERE` фильтрует **строки до группировки**.
* `HAVING` фильтрует **результаты после группировки**.
* Можно комбинировать условия через `AND`, `OR`, использовать диапазоны, списки, шаблоны и проверку на NULL.
