Группировка записей и функция COUNT()


Пусть необходимо узнать, какие сообщения и в каких темах имеются. Для этого можно воспользоваться стандартным запросом с использованием оператора SELECT:

Для того чтобы узнать сколько сообщений на форуме имеется, можно воспользоваться встроенной функцией COUNT(). Эта функция подсчитывает число строк. Причем, если в качестве аргумента этой функции выступает *, то подсчитываются все строки таблицы. А если в качестве аргумента указывается имя столбца, то подсчитываются только те строки, которые имеют значение в указанном столбце.

В данном примере оба аргумента дадут одинаковый результат, т.к. все столбцы таблицы имеют тип NOT NULL.

Напишем запрос, используя в качестве аргумента столбец id_topic:

SELECT COUNT(id_topic) FROM posts;

Таким образом, в темах имеется 4 сообщения.

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

Запрос теперь будет выглядеть так:

SELECT id_topic, COUNT(id_topic) FROM posts GROUP BY id_topic;

Оператор GROUP BY указывает СУБД сгруппировать данные по столбцу id_topic (т.е. каждая тема – отдельная группа) и для каждой группы подсчитать количество строк:

Таким образом, в теме с id=1 – 3 сообщения, а с id=4 – одно.

Если бы в поле id_topic были возможны отсутствия значений, то такие строки были бы объединены в отдельную группу со значением NULL.

Предположим, что нас интересуют только те группы, в которых больше двух сообщений. В обычном запросе данное условие указывается с помощью оператора WHERE, но этот оператор умеет работать только со строками, а для групп те же функции выполняет оператор HAVING:

SELECT id_topic, COUNT(id_topic) FROM posts

GROUP BY id_topic

HAVING COUNT(id_topic) > 2;

В результате имеем:

Условия, которые можно задавать оператором WHERE, можно задавать и оператором HAVING, только надо запомнить, что WHERE фильтрует строки, а HAVING – группы.

 



Дата добавления: 2018-05-10; просмотров: 966;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.