下面的例子显示了如何使用位组函数来计算每个月中用户访问网页的天数。
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
分享到:
相关推荐
个人整理MySQL笔记。包括SQL语法,MySQL管理,C/C++接口编程
/usr/local/mysql/bin/safe_mysqld--uer=root&(注意 safe_mysqld与mysqld_safe是不同的,&表示mysql在后台运行)我的就会报错了 STOPPING server from pid file /usr/local/mysql/data/localhost.localdomain.pid ...
/usr/local/mysql/bin/mysqlhotcopy -u root -p --addtodest --noindices --flushlog -q qeedoo /tmp/bak install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /usr/lib/perl5/site_...
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_DATADIR=/data/mysql -DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost_1_59_0 -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DMYSQL_TCP_...
一个JAVAWEB拍买系统,不错,用的是MYSQL数据库,请留言
基于C_S结构的Java局域网聊天系统包含MySQL数据库
struts_hibernate_velocity_mysql 开发实例 ................
在线订餐网站是一个基于互联网的B/S模式的网上订餐系统,利用主流框架struts2+hibernate开发技术和MYSQL数据库来开发这个系统。该系统为客户提供会员注册 登录,修改密码和资料,在线订餐(可选定喜欢的菜式或者饮料...
lib_mysqludf_sys 的win版本dll库
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Control/MySQL, HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Control/MySQL, HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/MySQL, HKEY_CURRENT_USER/Software/...
教务管理系统(或自拟题目) 【目的】 该实践性环节对于巩固学生的数据库知识,系统地掌握数据库设计理论与应用,加强学生的实践动手能力和提高学生的综合开发经验十分重要和必要。 本课程分为系统需求分析与...
用于生成模板代码
goldengate19.1.0.0.3Mysql版本的Mysql数据库同步软件,亲测没问题 有问题的可以联系我QQ:2836310921
University and colleges Student posting for youth service corp and intership program
基于ViSual Studio 2013 + MYSQL9_5302 + Navicat for MySQL9_5302的ATM自动存取款系统,详细介绍见文章:https://blog.csdn.net/weixin_44410704/article/details/118197108
CentOS 7.5 64位下编译好的lib_mysqludf_sys.so,源文件在https://download.csdn.net/download/shaynerain/10715798,我博客 中有介绍怎么用
honeycomb, 用于云的MySql存储引擎 Honeycomb, -. __ _/__/__ {|||) <__/__/__//__/__/ `-' __/__/__//__/__/ __/__/__/ __/__/ _
DATA_DIR="/data/mysql/3306/data" MYSQLBASE_DIR="/usr/local/mysql" echo "please input mysql version:" read VERSION echo "YOUR mysql version is mysql-$VERSION.tar.gz" if [ -e "$MYSQL_INSTALL_DIR/...
mysql master-slave 主从配置的讲解
java人事管理系统: 有软件界面 资源报的错误都是一些基础错误,是因为数据库版本不同造成的,可以自行解决 博文链接:https://blog.csdn.net/Lee_Cdut/article/details/123772260?spm=1001.2014.3001.5502