mysql中BIT_COUNT的统计使用

下面的例子显示了如何使用位组函数来计算每个月中用户访问网页的天数。
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;
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,自动去除了重复的日期。

转载于:https://blog.51cto.com/wlq1203/765772

用位组函数来计算每个月中用户访问网页的天数。相关推荐

  1. API函数的中文说明及所有的32位WindowsAPI函数的定义

    API函数的中文说明及所有的32位WindowsAPI函数的定义 ============================API函数的中文说明============================= ...

  2. MySQL中的组函数(聚合函数)

    MySQL中的组函数(聚合函数) 组函数操作行集,给出每组的结果.组函数不象单行函数,组函数对行的集合进行操 作,对每组给出一个结果.这些集合可能是整个表或者是表分成的组. 一.组函数与单行函数的区别 ...

  3. SQL语言之组函数(Oracle)

    组函数(聚合函数) 组函数操作行集,给出每组的结果.组函数不像单行函数,组函数对行的集合进行操作,对每组给出一个结果.这些集合可能是整个表或者是表分成的组: > 一.组函数与单行函数的区别 单 ...

  4. php日期相减函数,倒计时函数_计算两个时间相差值_PHP函数

    **PHP倒计时函数.求两个日期时间之间相差的时间函数.计算时差函数_PHP函数笔记** ```php /** * 求两个日期时间之间相差的时间 * (针对1970年1月1日之后,求之前可以采用泰勒公 ...

  5. 根据父类id查询所有的父级_031、组函数和子查询

    1.组函数(聚合函数) (1)组函数介绍 组函数操作行集,给出每组的结果.组函数不象单行函数,组函数对行的集合进行操作, 对每组给出一个结果.这些集合可能是整个表或者是表分成的组. 组函数与单行函数区 ...

  6. [转]EXCEL截取字符串中某几位的函数——LeftMIDRight及Find函数的使用

    原文地址:http://blog.sina.com.cn/s/blog_3f136a180102ymq5.html EXCEL截取字符串中某几位的函数 --Left MID Right及Find函数的 ...

  7. 【MySQL快速入门】高级查询:计算函数分组计算

    使用聚合函数汇总数据: SQL提供统计函数: count([shift+8]):统计表中元组个数 count([distinct]<列名>):统计本列列值个数 sum(<列名> ...

  8. Excel函数——小数点计算

    Excel函数--小数点计算 动作目标:比较"误差值"和"中测计算的误差"是否相等?如果不相等把这两个值自动标红! 动作一: 动作二: 结果:H列=D列和F列的 ...

  9. C语言-函数案例-计算圆周长

    C语言-函数案例-计算圆周长 任务要求 设圆半径r=1.5,圆柱高h=3,求圆周长.圆面积.圆球表面积.圆球体积.圆柱体积. 用scanf()输入数据, 输出计算结果.输出时要有说明,结果取小数点后两 ...

最新文章

  1. 换掉VMware?轻量级虚拟机,横空出世!
  2. spring之AOP的简单实例
  3. STL常用对象,不会搞得C++跟没学一样
  4. DFF之--(一)神经网络入门之线性回归
  5. 查看mysql是否启用安全审计_如何查看oracle是否开启了审计功能?
  6. LeetCode 28. Implement strStr()
  7. Writing udev rules
  8. C++笔记----运算符重载
  9. 随机排列算法(Fisher-Yates)
  10. Arcgis培训内容
  11. h5网页版字母消除游戏制作,html+jquery
  12. 4.12作业--CSS
  13. 科技园区及科研实验室智能消防安全管控系统
  14. iPhone手机总是弹出输入ID密码怎么办?
  15. 计算机组装需要注意什么东西,组装一台计算机需要注意那些问题?
  16. 12月29日每日一题
  17. HTML表格,列表,超链接,图片
  18. Webots中常用的函数(C版)
  19. IDEA登录账户报错:Certificate used to sign the license is not signed by JetBrains root certificate
  20. 前端小项目 QuizApp 答题卡片

热门文章

  1. 第一阶段冲刺 第二天
  2. 使用 NVM 管理不同的 Node.js 版本
  3. Android开发系列之创建自定义控件
  4. (线性基) bzoj 2460
  5. 修改属性页CPropertyPage标题
  6. QT之在QML中使用C++类和对象的两种方式
  7. [翻译]VC++中创建并使用自定义控件
  8. Marshal在C#中的应用(void *指针到IntPtr的转化)
  9. vs2010本地调试打不开网页
  10. Xcode12快捷键配置