Spec-Zone .ru
спецификации, руководства, описания, API

3.6.8. Вычисление Посещений В День

Следующий пример показывает, как можно использовать разрядные групповые функции, чтобы вычислить число дней в месяц, пользователь посетил Веб-страницу.

CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL,             day INT(2) UNSIGNED ZEROFILL);INSERT INTO t1 VALUES(2000,1,1),(2000,1,20),(2000,1,30),(2000,2,2),            (2000,2,23),(2000,2,23);

Таблица в качестве примера содержит значения, представляющие "дневные посещения" месяца года пользователями к странице. Чтобы определить, сколько различных дней в каждом месяце эти посещения происходит, используйте этот запрос:

SELECT year,month,BIT_COUNT(BIT_OR(1<<day)) AS days FROM t1       GROUP BY year,month;

Который возвращается:

+------+-------+------+| year | month | days |+------+-------+------+| 2000 |    01 |    3 || 2000 |    02 |    2 |+------+-------+------+

Запрос вычисляет, сколько различных дней появляется в таблице для каждой комбинации года/месяца с автоматическим удалением двойных записей.