Поиск по сайту:
Стоит только посадить Германию в седло, а уж поскакать она сумеет (О. Бисмарк).

SQL — Group By

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...
19.04.2017
SQL - Group By

Предложение GROUP BY используется совместно с SELECT для организации одинаковых данных в группы. Предложение GROUP BY следует после условия WHERE в операторе SELECT и предшествует ORDER BY.

Синтаксис

Базовый синтаксис в GROUP BY показан в следующем блоке кода. Предложение GROUP BY должно следовать условиям в предложении WHERE и должно предшествовать ORDER BY, если он используется.

SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2
ORDER BY column1, column2

Примеры

Рассмотрим таблицу CUSTOMERS, в котором присутствуют следующие записи:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Maxim    |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Oleg     |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 31500.00 |
|  5 | Ruslan   |  34 | Omsk      | 43000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

 

Если вы хотите знать общую сумму заработной платы каждого клиента, то запрос с GROUP BY будет выглядеть следующим образом.

SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
   GROUP BY NAME;

 

Это произведет следующий результат:

+----+----------+----------+
| ID | NAME     | SALARY   |
+----+----------+----------+
|  2 | AndreyEx | 55500.00 |
|  6 | Dima     | 45000.00 |
|  4 | Masha    | 31500.00 |
|  1 | Maxim    | 21000.00 |
|  3 | Oleg     | 34000.00 |
|  7 | Roma     | 10000.00 |
|  5 | Ruslan   | 43000.00 |
+----+----------+----------+

 

Теперь, давайте посмотрим на таблицу CUSTOMERS, которая имеет следующие записи с повторяющимися именами:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | AndreyEx |  35 | Moscow    | 21000.00 |
|  2 | AndreyEx |  38 | Krasnodar | 55500.00 |
|  3 | Masha    |  33 | Rostov    | 34000.00 |
|  4 | Masha    |  35 | Moscow    | 31500.00 |
|  5 | Dima     |  34 | Omsk      | 43000.00 |
|  6 | Dima     |  32 | SP        | 45000.00 |
|  7 | Roma     |  34 | SP        | 10000.00 |
+----+----------+-----+-----------+----------+

 

Теперь же, если вы хотите знать, общую сумму заработной платы по каждому клиенту, то запрос GROUP BY будет выглядеть следующим образом:

SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
   GROUP BY NAME;

 

Это произведет следующий результат:

+----+----------+----------+
| ID | NAME     | SALARY   |
+----+----------+----------+
|  2 | AndreyEx | 76500.00 |
|  4 | Masha    | 65500.00 |
|  6 | Dima     | 88000.00 |
|  7 | Roma     | 10000.00 |
+----+----------+----------+

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Спасибо!

Теперь редакторы в курсе.