SQL
SQL Group By vs Distinct
Поиск…
Разница между GROUP BY и DISTINCT
GROUP BY используется в сочетании с функциями агрегации. Рассмотрим следующую таблицу:
| номер заказа | Идентификатор пользователя | название магазина | Ценность заказа | Дата заказа |
|---|---|---|---|---|
| 1 | 43 | Магазин A | 25 | 20-03-2016 |
| 2 | 57 | Магазин B | 50 | 22-03-2016 |
| 3 | 43 | Магазин A | 30 | 25-03-2016 |
| 4 | 82 | Магазин C | 10 | 26-03-2016 |
| 5 | 21 | Магазин A | 45 | 29-03-2016 |
В нижеследующем запросе используется GROUP BY для выполнения агрегированных вычислений.
SELECT
storeName,
COUNT(*) AS total_nr_orders,
COUNT(DISTINCT userId) AS nr_unique_customers,
AVG(orderValue) AS average_order_value,
MIN(orderDate) AS first_order,
MAX(orderDate) AS lastOrder
FROM
orders
GROUP BY
storeName;
и вернет следующую информацию
| название магазина | total_nr_orders | nr_unique_customers | average_order_value | первый заказ | последний заказ |
|---|---|---|---|---|---|
| Магазин A | 3 | 2 | 33,3 | 20-03-2016 | 29-03-2016 |
| Магазин B | 1 | 1 | 50 | 22-03-2016 | 22-03-2016 |
| Магазин C | 1 | 1 | 10 | 26-03-2016 | 26-03-2016 |
Хотя DISTINCT используется для отображения уникальной комбинации различных значений для указанных столбцов.
SELECT DISTINCT
storeName,
userId
FROM
orders;
| название магазина | Идентификатор пользователя |
|---|---|
| Магазин A | 43 |
| Магазин B | 57 |
| Магазин C | 82 |
| Магазин A | 21 |
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow