用位组函数来计算每个月中用户访问网页的天数。
生活随笔
收集整理的這篇文章主要介紹了
用位组函数来计算每个月中用户访问网页的天数。
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
mysql中BIT_COUNT的統(tǒng)計使用??
下面的例子顯示了如何使用位組函數(shù)來計算每個月中用戶訪問網(wǎng)頁的天數(shù)。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 );
示例表中含有代表用戶訪問網(wǎng)頁的年-月-日值。可以使用以下查詢來確定每個月的訪問天數(shù):
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 ? |
+ -- ----+-------+------+
該查詢計算了在表中按年 / 月組合的不同天數(shù),可以自動去除重復的詢問。
上面例子中的查詢語句: select year,month,bit_count(bit_or(1<<day)) as days from t1 group by year,month; 1、BIT_COUNT( expr ):返回 expr 的二進制表達式中”1“的個數(shù)。
??? ??? 例如:29 = 11101 則:BIT_COUNT(29)= 4;
2、BIT_OR( expr ):返回 expr 中所有比特的bitwise OR。計算執(zhí)行的精確度為64比特(BIGINT) 。
?
??? 例如:上面例子中,2000年02月中有一條2號的記錄兩條23號的記錄,所以"1<<day"表示出來就是 “1<<2”和“1<<23”,得到二進制數(shù) 100 和 100000000000000000000000 。然后再OR運算。即 100 OR 10000000000000000000000 OR 10000000000000000000000 = 100000000000000000000100;這樣再用BIT_COUNT處理得出的值就是2,自動去除了重復的日期。
?
轉(zhuǎn)載于:https://blog.51cto.com/wlq1203/765772
總結(jié)
以上是生活随笔為你收集整理的用位组函数来计算每个月中用户访问网页的天数。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [最新下载] 【火车票订票外挂】Go-H
- 下一篇: wps如何筛选两列重复数据(excel如