1.UNSIGNED无符号类型 ZEROFILL用0填充以满足数据长度。
2.bit_count(data):data的二进制数包含1的个数;mysql> select bit_count(3);结果为2
bit_or(): 按位或运算
bit_and():按位与运算
例如:
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;|
由于1<<day 如果day数据相同,那么运算后的结果是一样的。bit_or运算后对应位1和1或运算结果还是1.这样就达到了去重的效果。