下面的例子显示了如何使用位组函数来计算每个月中用户访问网页的天数。
CREATE TABLEt1 ( year YEAR ( 4 ),month INT ( 2 ) UNSIGNED ZEROFILL,
day INT ( 2 ) UNSIGNED ZEROFILL);
INSERT INTOt1VALUES ( 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 ))ASdaysFROMt1
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,自动去除了重复的日期。
分享到:
相关推荐
goldengate19.1.0.0.3Mysql版本的Mysql数据库同步软件,亲测没问题 有问题的可以联系我QQ:2836310921
navicat112_mysql_en_x64 访问数据库工具
navicat112_mysql_cs_x64.tar.gz
适用于Debian Linux 10 (x86, 64-bit) 压缩包内容: mysql-community-server_8.0.25-1debian10_amd64.deb、 mysql-community-server-core_8.0.25-1debian10_amd64.deb、 mysql-community-server-core-dbgsym_8.0.25-...
压缩包中包含navicat_for_mysql_10.0.11_cn_linux.tar.gz的安装包及其安装及配置步骤!由于linux里安装Navicat需要安装另一个环境wine,其安装很繁琐,而本Navicat安装包中已经自带wine环境,不需要另外安装wine环境...
mysql中的ROW_COUNT()可以返回前一个SQL进行UPDATE,DELETE,INSERT操作所影响的行数
MySQL Community Server 8.0.29(mysql-server_8.0.29-1debian11_amd64.deb-bundle.tar),适用于Debian Linux 11 (x86, 64-bit), DEB Bundle
mysql_pwd_crack.rar 加上个木头字典 ,自己写也ok
各版本mysql-connector-net及 mysql_for_visualstudio 1.2.9
MySQL中文参考手册,详细介绍了MySQL的使用方法和函数这些方面的问题
MySQL_5.1_zh.chm
mysql 32bit库 有libmysql.lib 和 libmysql.dll,在win32平台上使用,解决编译时会引起如下错误无法链接问题
navicat_for_mysql_10.0.11_cn_linux.tar.gz
那么,在SELECT查询中包含SQL_CALC_FOUND_ROWS选项,然后执行FOUND_ROWS()就可以了:代码如下mysql> SELECT SQL_
lib_mysqludf_sys 的win版本dll库
Thinkphp6.0以上版本在查询MySql数据表中JSON类型数据下使用JSON_CONTAINS函数
ubunt_64bit_mysql-workbench ubuntu 12.04 64位 安装mysql-workbench 安装方法详见 http://262487936.iteye.com/blog/1953408
对mysql数据表中的源数据表的源字段进行分词,然后把词频统计结果存到目标数据表 应用场景 分析搜索短语中最热门的词 使用说明 使用 github.com/huichen/sego 作为中文分词库 修改config.go,配置数据库 参照 bin/...
PHP和MySQL Web开发_中文PHP和MySQL Web开发_中文PHP和MySQL Web开发_中文PHP和MySQL Web开发_中文PHP和MySQL Web开发_中文PHP和MySQL Web开发_中文