# Группировка


## Группировка с помощью GROUP BY


`GROUP BY` используется для объединения строк с одинаковыми значениями в одну группу. Это полезно, когда нужно подсчитать количество, суммарные или средние значения по группам.

Представим таблицу **animals**:

| icon | name | specie | location | owner | age | weight |
| --- | --- | --- | --- | --- | --- | --- |
| 🐶 | Бобик | Собака | Красные ворота | Иван | 3 | 10 кг |
| 🐱 | Мурка | Кошка | Парк культуры | Мария | 4 | 5 кг |
| 🐦 | Кеша | Попугай | Чистые пруды | Елена | 2 | 0.5 кг |
| 🐶 | Шарик | Собака | Красные ворота | Иван | 5 | 12 кг |
| 🐱 | Багира | Кошка | Таганская | Мария | 6 | 6 кг |

### Подсчитать количество животных каждого вида:

```sql
SELECT specie, COUNT(*) FROM animals GROUP BY specie;
```

Результат (Количество по видам):

```sql
Собака  2
Кошка   2
Попугай 1
```

### Подсчитать количество животных на каждой станции метро:

```sql
SELECT location, COUNT(*) FROM animals GROUP BY location;
```

Результат (Количество по станциям метро):

```sql
Красные ворота 2
Парк культуры  1
Чистые пруды   1
Таганская      1
```

### Найти максимальный возраст животного для каждого владельца:

```sql
SELECT owner, MAX(age) FROM animals GROUP BY owner;
```

Результат (Максимальный возраст по владельцу):

```sql
Иван  5
Мария 6
Елена 2
```

### Вычислить средний вес животных каждого вида:

```sql
SELECT specie, AVG(SUBSTR(weight, 1, LENGTH(weight)-3)) FROM animals GROUP BY specie;
```

Результат (Средний вес по виду):

```sql
Собака  11
Кошка   5.5
Попугай 0.5
```

"

## Количество заказов каждого напитка


В этом задании мы работаем с заказами магазина, который доставляет алкоголь в пункты выдачи (points). Каждая позиция может быть в пути (ontheway), доставлена (delivered), повреждена (damaged), ожидает выдачи (pending).

**Таблица orders**

| icon | product | point | price | status | cat |
| --- | --- | --- | --- | --- | --- |
| 🍶 | Absolut Vodka | Курская | 1800 | ontheway | vodka |
| 🌵 | Patrón Silver Tequila | Полянка | 5500 | delivered | tequila |
| 🍎 | Rekorderlig | Тверская | 480 | pending | cider |

Рассчитайте  информацию, сколько посылок с каждым типом напитка (wine, rum, gin и так далее) присутствует в таблице заказов. Выведите информацию в колонках `icon`, `cat`, `count`.

## Cредняя стоимость каждого напитка


Рассчитайте  среднюю (avg) стоимость для каждого типа напитка (wine, rum, gin и так далее) из таблицы заказов. Выведите информацию в колонках icon, product,  avg_price. Выведите категории по алфавиту. Для округления среднего используйте функцию `round`

. Подсказка: выполните группировку по icon, cat.

**Таблица orders**

| icon | product | point | price | status | cat |
| --- | --- | --- | --- | --- | --- |
| 🍶 | Absolut Vodka | Курская | 1800 | ontheway | vodka |
| 🌵 | Patrón Silver Tequila | Полянка | 5500 | delivered | tequila |
| 🍎 | Rekorderlig | Тверская | 480 | pending | cider |

## Количество заказов по пунктам выдачи и общая сумма 


Товары отправлены на разные пункты выдачи. Посчитайте, сколько товаров отпправлено на каждый и какая общая сумма заказов придет в каждый пункт. Не учитывайте статус заказов. Не сортируйте паункты выдачи.

**Таблица orders**

| icon | product | point | price | status | cat |
| --- | --- | --- | --- | --- | --- |
| 🍶 | Absolut Vodka | Курская | 1800 | ontheway | vodka |
| 🌵 | Patrón Silver Tequila | Полянка | 5500 | delivered | tequila |
| 🍎 | Rekorderlig | Тверская | 480 | pending | cider |

## Поврежденные заказы


Некоторые заказы были помечены, как прибывшие разбитыми на пункте выдачи (status = damaged). Есть подозрение, что сотрудники одного из пунктов выдачи сами их выпивают!  Посчитайте, на какую сумму поврежденных заказов находится в каждом из пунктов, чтобы вычислить прохвостов!

**Таблица orders**

| icon | product | point | price | status | cat |
| --- | --- | --- | --- | --- | --- |
| 🍶 | Absolut Vodka | Курская | 1800 | ontheway | vodka |
| 🌵 | Patrón Silver Tequila | Полянка | 5500 | delivered | tequila |
| 🍎 | Rekorderlig | Тверская | 480 | pending | cider |

## Количество заказов дороже 1000 рублей по каждому пункту


Посмотрим, как поменяется, картинка, когда мы отфильтруем заказы стоимостью от 1000 рублей включительно. Выведите сколько таких заказов по каждому пункту выдачи!

**Таблица orders**

| icon | product | point | price | status | cat |
| --- | --- | --- | --- | --- | --- |
| 🍶 | Absolut Vodka | Курская | 1800 | ontheway | vodka |
| 🌵 | Patrón Silver Tequila | Полянка | 5500 | delivered | tequila |
| 🍎 | Rekorderlig | Тверская | 480 | pending | cider |

## Группировка по статусу


У заказов есть разные статусы (intheway, pending, delivered, damaged). Посчитайте, сколько товаров в каждом статусе

**Таблица orders**

| icon | product | point | price | status | cat |
| --- | --- | --- | --- | --- | --- |
| 🍶 | Absolut Vodka | Курская | 1800 | ontheway | vodka |
| 🌵 | Patrón Silver Tequila | Полянка | 5500 | delivered | tequila |
| 🍎 | Rekorderlig | Тверская | 480 | pending | cider |

## Объем завершенных заказов на категорию


У заказов есть разные статусы, нас интересует delivered. Посчитайте, сколько товаров в таком статусе на каждую категорию и на какую сумму?

**Таблица orders**

| icon | product | point | price | status | cat |
| --- | --- | --- | --- | --- | --- |
| 🍶 | Absolut Vodka | Курская | 1800 | ontheway | vodka |
| 🌵 | Patrón Silver Tequila | Полянка | 5500 | delivered | tequila |
| 🍎 | Rekorderlig | Тверская | 480 | pending | cider |

## Самый крупный поврежденный заказ


Теперь нас интересует статус damaged. Выведите стоимость самого крупного поврежденного товара для каждого пункта.

**Таблица orders**

| icon | product | point | price | status | cat |
| --- | --- | --- | --- | --- | --- |
| 🍶 | Absolut Vodka | Курская | 1800 | ontheway | vodka |
| 🌵 | Patrón Silver Tequila | Полянка | 5500 | delivered | tequila |
| 🍎 | Rekorderlig | Тверская | 480 | pending | cider |
