下面的例子显示了如何使用位组函数来计算每个月中用户访问网页的天数。
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 |
+ -- ----+-------+------+
该查询计算了在表中按年 / 月组合的不同天数,可以自动去除重复的询问。
上面例子中的查询语句:
SELECT year,month,BIT_COUNT(BIT_OR(1<<day)) AS days FROM t1 GROUP BY year,month;
中的”BIT_COUNT(BIT_OR(1<<day))
“用法比较有技巧。
1、BIT_COUNT( expr ):返回 expr 的二进制表达式中”1“的个数。
例如:29 = 11101 则:BIT_COUNT(29)= 4;
2、BIT_OR( expr ):返回 expr 中所有比特的bitwise OR。计算执行的精确度为64比特(BIGINT) 。
例如:上面例子中,2000年02月中有一条2号的记录两条23号的记录,所以"1<<day"表示出来就是 “1<<2”和“1<<23”,得到二进制数 100 和 100000000000000000000000 。然后再OR运算。即 100 OR 10000000000000000000000 OR 10000000000000000000000 = 100000000000000000000100;这样再用BIT_COUNT处理得出的值就是2,自动去除了重复的日期。
forwarded from : http://bbs.chinaunix.net/archiver/?tid-1510005.html
分享到:
相关推荐
7. 位操作函数:如BIT_AND()、BIT_OR()和BIT_XOR()用于进行二进制位运算。 8. 信息函数:如DATABASE()返回当前数据库名,USER()获取当前用户名,VERSION()显示MySQL版本信息。 手册还可能包含关于聚合函数(如...
MySQL 5.0是MySQL数据库管理系统的一个重要版本,它在SQL查询、性能优化以及稳定性方面都有显著提升。本文将详细探讨MySQL 5.0的主要特点、功能和下载安装的注意事项。 1. MySQL 5.0的主要特性: - **InnoDB存储...
2. **位操作**:`BIT_AND()`, `BIT_OR()`, `BIT_XOR()`进行位运算,`BIT_COUNT()`计算位集中的1的个数。 这些函数在实际开发中非常常用,理解并熟练运用它们能极大地提高数据库操作的效率。例如,在数据分析时,...
8. **位操作函数**:对于需要进行二进制位操作的场景,MySQL提供了BIT_AND(), BIT_OR(), BIT_XOR()等函数。 在学习过程中,你将通过实际操作和案例分析来理解并掌握这些函数的用法,从而提升你在MySQL数据库管理和...
ACOS, ADDTIME, AES_DECRYPT, AES_ENCRYPT, ANY_VALUE, ASCII, ASIN, ATAN, ATAN2, BINARY, BIT_COUNT, BIT_XOR, CAST, CEIL, CHAR_LENGTH, COLLATE, CONCAT_WS, CONVERT_TZ, COS, COT, COUNTIF, CRC32, DATE, DATE...
- 包括位函数(如 `BIT_AND`, `BIT_OR`),加密函数(如 `ENCRYPT`, `AES_ENCRYPT`),信息函数(如 `USER`, `DATABASE`)以及其他特殊用途的函数。 10. **与GROUP BY子句同时使用的函数**: - `GROUP BY` 用于对...
- `BIT_OR`:按位或。 - `BIT_AND`:按位与。 #### 控制流函数 控制流函数可用于根据条件改变SQL语句的行为,如: - `IFNULL`:如果第一个参数为 `NULL`,则返回第二个参数;否则返回第一个参数。 - `NULLIF`:...
- **COUNT(col)**: 计算指定列`col`中非空值的数量。 - **MIN(col)**: 返回指定列`col`中的最小值。 - **MAX(col)**: 返回指定列`col`中的最大值。 - **SUM(col)**: 返回指定列`col`中所有值的总和。 - **GROUP_...
### MySQL常用函数详解 #### 一、数学函数 在MySQL中,数学函数是处理数值数据的基本工具之一。这些函数能够帮助我们执行简单的算术运算、数值转换以及进行数学计算。 - **ABS(x)**:返回`x`的绝对值。例如,`ABS...
18. REPEAT(str, count): 重复`str``count`次。如REPEAT('M', 3)返回'MMM'。 19. LTRIM(str): 删除`str`左侧的空格。 20. RTRIM(str): 删除`str`右侧的空格。 以上只是MySQL字符串函数的一部分,实际上还有更多...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,用于存储和管理各种数据。在本场景中,我们主要涉及了四个数据库表:`goods`(商品)、`category`(商品分类)、`account`(用户账户)和`cart`(购物车)。接...
- 分组统计:`SELECT age, COUNT(1) FROM emp GROUP BY age [WITH ROLLUP] HAVING COUNT(1) > 1;` - 多表联合查询:`SELECT ename, name FROM emp LEFT JOIN emp1 ON emp.ename = emp1.name;` - 子查询:`SELECT ...
creat table student(id int auto_increment primary key,name varchar(20) not null,age int not null,gender bit default 1,address varchar(20), isDelete bit default 0) 3、删除表 drop table 表名; 4、查看表...
### MySQL常用函数详解 #### 一、数学函数 在MySQL中,数学函数是数据库操作的基础之一,它们可以处理各种数值运算需求。 - **ABS(X)**:返回`X`的绝对值。 - 示例:`SELECT ABS(-5);` 返回 `5`。 - **BIN(X)*...
- **二进制**:`BIT`, `BINARY`, `VARBINARY`, `BLOB`。 #### 五、操作数据库 - **显示、创建、删除数据库**: - `SHOW DATABASES;` - `CREATE DATABASE database_name;` - `DROP DATABASE database_name;` - ...
### MySQL常用函数详解 MySQL作为一款广泛使用的开源关系型数据库管理系统,在数据管理方面提供了丰富的功能。其中,函数是实现各种复杂操作的重要工具之一。本文将详细介绍MySQL中的几类常用函数,包括数学函数、...
3. `BIT_LENGTH(str)`:返回二进制字符串`str`的长度,以位为单位。 4. `CHAR(n,... [using charset])`:此函数将每个参数`n`视为一个整数,并返回一个包含这些整数对应字符的字符串。NULL值会被忽略,所有参数都会...
MySQL是一种广泛使用的开源关系型数据库管理系统,其丰富的函数库使得数据处理变得更加便捷高效。本文将详细介绍MySQL中的常用函数,分为数学函数、聚合函数、字符串函数和日期与时间函数四大类。 1. 数学函数: -...
- 聚合函数:`SUM()`, `AVG()`, `COUNT()`, `MAX()`, `MIN()` - **非空约束(`NOT NULL`)的作用**: - `NOT NULL`约束用于指定一个字段不能有`NULL`值。 - 如果某字段被声明为`NOT NULL`,则在插入或更新数据时...
13. SQL SERVER 2005 常用的数据类型包括 integer、bit、datetime、varchar 等,但不包括 distinct。 14. 视图提高了数据库系统的安全性。 15. 数据库中数据的正确性、有效性和相容性称为完整性。 16. SQL 中的主...