English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite базовый учебник

SQLite продвинутый учебник

SQLite программный интерфейс

GROUP BY-пredложение SQLite

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

Предложение GROUP BY следует за предложением WHERE в предложении SELECT и перед предложением ORDER BY.

Грамматика

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

SELECT column-list
FROM table_name
WHERE [conditions]
GROUP BY column1, column2....columnN
ORDER BY column1, column2....columnN

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

Онлайн пример

Рассмотрим таблицу COMPANY с следующими записями.

ID         NAME       AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul       32         California  20000.0
2           Allen       25         Texas       15000.0
3           Teddy       23         Norway     20000.0
4           Mark       25         Rich-Mond   65000.0
5           David       27         Texas       85000.0
6           Kim       22         South-Hall  45000.0
7           James       24         Houston     10000.0

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

sqlite> SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME;

Результат вывода:

NAME        SUM(SALARY)
----------  -----------
Allen 15000.0
David 85000.0
James 10000.0
Kim 45000.0
Mark 65000.0
Paul 20000.0
Teddy 20000.0

Теперь давайте используем следующие инструкции INSERT, чтобы создать еще три записи в таблице COMPANY.

INSERT INTO COMPANY VALUES (8, 'Paul', 24, 'Houston', 20000.00);
INSERT INTO COMPANY VALUES (9, 'James', 44, 'Norway', 5000.00);
INSERT INTO COMPANY VALUES (10, 'James', 45, 'Texas', 5000.00);

Теперь наша таблица содержит записи с повторяющимися именами.

ID         NAME       AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul       32         California  20000.0
2           Allen       25         Texas       15000.0
3           Teddy       23         Norway     20000.0
4           Mark       25         Rich-Mond   65000.0
5           David       27         Texas       85000.0
6           Kim       22         South-Hall  45000.0
7           James       24         Houston     10000.0
8           Paul       24         Houston     20000.0
9           James       44         Norway     5000.0
10         James       45         Texas       5000.0

Ещё раз, давайте используем такой же запрос для группировки всех записей по столбцу NAME, как показано ниже:

sqlite> SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME;

Это приведет к следующим результатам.

NAME        SUM(SALARY)
----------  -----------
Allen       15000
David       85000
James       20000
Kim         45000
Mark        65000
Paul        40000
Teddy       20000

Давайте так используем оператор ORDER BY и GROUP BY -

sqlite> SELECT NAME, SUM(SALARY) 
   FROM COMPANY GROUP BY NAME ORDER BY NAME DESC;

Это приведет к следующим результатам.

NAME        SUM(SALARY)
----------  -----------
Teddy       20000
Paul        40000
Mark        65000
Kim         45000
James       20000
David       85000
Allen       15000