最近遇到一个关于sql的维度统计问题,要求统计各时间段内不同类型的浏览器的活跃人数,并计算各时间段内活跃用户总数。听起来十分简单,但是深究下来发现,同一个用户某时间段内会点击多次,而且可能是使用了不同的浏览器来进行点击,所以这里就涉及到一个浏览器维度内的去重和一个时间段维度内的去重。如下:

仔细思考,对表中数据进行如上统计时,浏览器维度统计要求同一个用户内部去重(同一个浏览器),而时间维度的总数统计要求对同一个用户去重(分属于不同浏览器),但是最终的结果都要再按照时间维度进行最终统计。

所以将浏览器维度的统计与活跃总数的统计拆为两条sql查询,最终通过对日期字段的关联查询实现上述结果。

我们假设表中有下列数据:

1. 浏览器维度统计

selecttimes,sum(if(browser_type='Google',count,0)) as Google,sum(if(browser_type='IE',count,0)) as IE,sum(if(browser_type='Other',count,0)) as Other
from
(selectcount(distinct user_id) as count,browser_type,date_format(times,'%Y-%m-%d %H') as times
fromt_log
group bybrowser_type,date_format(times,'%Y-%m-%d %H')
) t
group bytimes

从内层向外分析,我们先根据times,browser_type分组,统计各浏览器每个小时的活跃度,同时对user_id去重计数;然后,行转列,输出业务要求的表格结果。

执行结果如下:

2.时间维度统计总数

selectdate_format(times,'%Y-%m-%d %H') as times,count( distinct user_id) as total
fromt_log
group by date_format(times,'%Y-%m-%d %H')

执行结果如下:

3.按时间维度统计所有

select*
from
(
selecttimes,sum(if(browser_type='Google',count,0)) as Google,sum(if(browser_type='IE',count,0)) as IE,sum(if(browser_type='Other',count,0)) as Other
from
(selectcount(distinct user_id) as count,browser_type,date_format(times,'%Y-%m-%d %H') as times
fromt_log
group bybrowser_type,date_format(times,'%Y-%m-%d %H')
) t
group bytimes) browser
left join (
selectdate_format(times,'%Y-%m-%d %H') as times,count( distinct user_id) as total
fromt_log
group by date_format(times,'%Y-%m-%d %H')
) total
using(times)

最终输出结果:

分维度统计各种浏览器活跃用户数量,并计算用户活跃总数相关推荐

  1. 2022年全球及各个国家、地区互联网用户数量,互联网用户占比、上网时长及上网原因分析[图]

    2021年,全球总人口数量达到78亿,互联网用户数量达到48亿人,截止2022年1月,全球互联网用户数量达到49.5亿人,同比增长4%,互联网用户占总人口的62.5%,每个互联网用户平均每天使用互联网 ...

  2. linux 全球用户数量,全球Linux用户市场占有率升至2.78%

    6月7日下午1点左右,www.w3counter.com终 于发布了今年5月份的统计数字,看起来,该网站为此次发布大概做了不少审定工作,相比以往,拖延了几天才发布.公布的统计数字如下: 4月份     ...

  3. 【博客大赛】100行js代码实现网站在线用户数量统计 nodejs + socket.io方案

    需求提出 公司的在线培训平台,需要增加一个新功能:实时统计当前在线的用户数量并在终端界面上显示,需要的时候可以查询当前在线的用户的明细. 有3种技术方案可以选用: 1)改动后台代码,在用户登录和退出时 ...

  4. sql中如何统计各种零件的总数量_[Python]提取数据库中数据, 用人货场的分析方法, 对电商双十一促销活动结果数据进行复盘分析...

    背景 某电商公司最近举行了一场促销活动,该案例是对此次活动的一次复盘和分析.所需要用到的工具有Python + SQL. python会用到的库有: sqlalchemy pandas sklearn ...

  5. 软件问题造成的经济损失案例_在无法准确认定经济损失、用户数量的情况下,如何认定破坏计算机信息系统的“后果严重”...

    最高人民法院刑事审判参考性案例 乐姿等破坏计算机信息系统案(<刑事审判参考>指导案例第1029号) 裁判摘要:在案证据无法证明受害公司遭受的经济损失达到入罪标准,也无法根据受侵害的用户数量 ...

  6. 网易云信新增用户、IM、实时音视频多维度统计功能

    2016年12月30日,网易云信数据统计功能上线,新增用户.IM.实时音视频多维度统计功能.(所有图片均可点击放大查看) 用户统计 用户统计模块分为"用户增长"和"地域属 ...

  7. java 登录下线_java web中Listener的实现(实现用户在线统计数量和强制用户下线)...

    一.实现的具体功能 (1)实现用户在线数量的统计,并显示在页面上. (2)实现强制用户下线的功能.创建一个超链接,用于实现强制用户下线的功能. (3)监听session的创建和销毁. 二.代码实现 ( ...

  8. Hive项目之谷粒影音:ETL清洗原数据、Hive统计视频观看数top10、视频类别top、视频观看数top其所属类别、类别流量top、类别热度top、上传视频用户数量top、类别视频观看top

    Hive实战之谷粒影音 项目数据下载地址: guiliVideo.zip谷粒影音项目视频表.用户表 包含内容: 两个文件夹 User表中的74702条数据 video表中5张表,每张表中都有多条数据 ...

  9. DAU-----日活跃用户数量

    概念 通常DAU会结合MAU(月活跃用户数量)一起使用,这两个指标一般用来衡量服务的用户粘性以及服务的衰退周期. [1]  MAU.DAU分别从宏观和微观的角度对服务的用户粘性做了权衡,也可以这么说, ...

最新文章

  1. 9本Java程序员必读的书
  2. 【计算机网络复习】1.1.4 时延、时延带宽积、RRT和利用率
  3. 2019C语言程序设计大赛,2019年全国高校计算机能力挑战赛 C语言程序设计决赛
  4. 测试运维该学些什么?怎么入门,怎么进阶?
  5. c语言flappy bird代码,Flappy bird源代码(略吊)
  6. 我在看着你呢——shiro学习
  7. [Guava源码日报](8)ImmutableCollection
  8. 消息队列技术终结者(一)—通俗深刻地认识JMS(即Java Message Service)
  9. node.js如何制作命令行工具(一)
  10. 【PTAL2-001】紧急救援(Dijkstra+最短路径的条数+最短路径中点权之和的最大值)
  11. 用js实现背景颜色改变
  12. 苹果云服务icloud_苹果手机怎么恢复通讯录?一键恢复技巧就在这里!
  13. 电脑中石英晶振的应用
  14. IFR报告称新冠疫情后的恢复对“机器人技术”的需求很高
  15. WAdmin 开源啦!!!
  16. 鸿蒙 形式化验证,形式化验证在网络中的应用
  17. java接口防抖_java swing 防抖机制
  18. 快速AI自动抠图,小花儿人工智能
  19. POLYV AI 打造视频直播“最强大脑”
  20. 电脑上常见的DB接口定义

热门文章

  1. 使用模拟电路制造CPU——从硬件到软件的设计
  2. png图片转eps格式
  3. 设计模式MVP案例----省市查询
  4. html/css/javacript
  5. 2019ccpc哈尔滨站K题(数学期望) Gym - 102394K Keeping Rabbits
  6. 艾为电子年盈利1亿元:同比增速大幅下滑,科创板IPO暂时中止
  7. HHM(直接计算法求观察序列的概率)
  8. call的用法及底层实现
  9. Klaviyo到底是不是Email公司?红海赛道白手起家95亿美金增长复盘
  10. 南瑞rt21系统服务器,南瑞“一种基于CORBA的综合监控系统数据定义和存取方法”等三项科技成果获专利授权...