---
title: Фильтрация и сортировка
seo:
  title: Фильтрация и сортировка — Java Developer
  description: Тема «Фильтрация и сортировка» для собеседования Java Developer. Для чего используется оператор HAVING? В чем различие между операторами HAVING и WHERE?
---

[Все темы Java Developer](/java-developer)

## <strong>Для чего используется оператор</strong> <code>HAVING</code><strong>?</strong> [#q-14bee738d69b81748f2fc88875f91eb0]

Оператор <code>HAVING</code> используется для фильтрации групп строк после применения оператора <code>GROUP BY</code>.

#### Основные моменты&#58;

- <strong>Применение&#58;</strong> Фильтрует результаты агрегатных функций
  (например, <code>SUM</code>, <code>COUNT</code>).

- <strong>Различие с</strong> <code>WHERE</code>
  <strong>&#58;</strong> <code>WHERE</code> фильтрует строки до группировки, а
  <code>HAVING</code> — после.

#### Пример&#58;

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

Этот запрос выбирает департаменты, в которых количество сотрудников больше 5.

:::note[Ссылки для изучения]

1. [Основы по SQL. Самоучитель](https://www.opennet.ru/docs/RUS/rusql/)
   :::

---

## <strong>В чем различие между операторами</strong> <code>HAVING</code> <strong>и</strong> <code>WHERE</code><strong>?</strong> [#q-14bee738d69b8168840fe1d2d0687a73]

<strong>Различие между операторами</strong> <code>HAVING</code>
<strong>и</strong> <code>WHERE</code>
<strong>&#58;</strong>

{/* prettier-ignore */}
- <code>WHERE</code><strong>&#58;</strong>

    - Фильтрует строки до группировки.

    - Применяется к отдельным строкам.

    - Используется с неагрегированными данными.

    ```sql
    SELECT department, COUNT(*)
    FROM employees
    WHERE salary > 50000
    GROUP BY department;
    ```

- <code>HAVING</code><strong>&#58;</strong>

    - Фильтрует группы строк после группировки.

    - Применяется к агрегатным функциям.

    - Используется с результатами <code>GROUP BY</code>.

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

#### Итог&#58;

- <code>WHERE</code> фильтрует данные перед группировкой.

- <code>HAVING</code> фильтрует данные после группировки.

:::note[Ссылки для изучения]

1. [Основы по SQL. Самоучитель](https://www.opennet.ru/docs/RUS/rusql/)
   :::

---

## <strong>Для чего используется оператор</strong> <code>ORDER BY</code><strong>?</strong> [#q-14bee738d69b818f939afaa6b4f39c53]

<code>ORDER BY</code> используется для сортировки результатов запроса по одному
или нескольким столбцам.

#### Основные моменты&#58;

- <strong>Сортировка по возрастанию&#58;</strong> По умолчанию, если не указано
  иное.

  ```sql
  SELECT * FROM employees ORDER BY name;
  ```

- <strong>Сортировка по убыванию&#58;</strong> Используется ключевое слово
  <code>DESC</code>.

  ```sql
  SELECT * FROM employees ORDER BY name DESC;
  ```

- <strong>Сортировка по нескольким столбцам&#58;</strong>

  ```sql
  SELECT * FROM employees ORDER BY department, salary DESC;
  ```

<code>ORDER BY</code> позволяет организовать вывод данных в нужном порядке.

:::note[Ссылки для изучения]

1. [Основы по SQL. Самоучитель](https://www.opennet.ru/docs/RUS/rusql/)
   :::

---

## <strong>Для чего используется оператор</strong> <code>GROUP BY</code><strong>?</strong> [#q-14bee738d69b812dbb50f4fcd1d2969e]

<code>GROUP BY</code> используется для группировки строк, имеющих одинаковые
значения в указанных столбцах, и выполнения агрегатных функций на каждой группе.

#### Основные моменты&#58;

{/* prettier-ignore */}
- <strong>Группировка данных&#58;</strong>

    - Группирует строки по указанным столбцам.

    - Используется с агрегатными функциями, такими как <code>COUNT</code>, <code>SUM</code>, <code>AVG</code>, <code>MAX</code>, <code>MIN</code>.

- <strong>Пример&#58;</strong>

    ```sql
    SELECT department, COUNT(*)
    FROM employees
    GROUP BY department;
    ```

В этом примере строки группируются по значению столбца <code>department</code>, и для каждой группы вычисляется количество строк.

<code>GROUP BY</code> позволяет сводить данные по определённым критериям и
применять агрегатные функции к группам данных.

:::note[Ссылки для изучения]

1. [Основы по SQL. Самоучитель](https://www.opennet.ru/docs/RUS/rusql/)
   :::
