SQL技巧:使用AVG()函数计算占比
计算方式对比
一般计算占比,比如转换率、留存率等,都是先分组求和再相除得到结果,但是在一定的条件下,可以直接使用AVG()求出百分比。
比如,要求统计报名转化率,报名转化率公式为转化率=报名人数/浏览人数
。
在下面图中,两种颜色分别表示了不同的计算过程:
- 淡橘色是第一种直接方法:分别求出浏览人数(7),报名人数(4),转化率=4/7=57%
- 蓝色是使用平均函数AVG():直接对“是否报名”列求平均数,结果也为4/7=57%,其中满足报名条件的人数(4),总人数(7)。
题目满足两个条件:
- 表格中有为唯一ID值,
- 有判断条件的列:在“是否报名”列中,只有0和1,1表示满足了条件(已经报名),0表示没有满足条件(没有报名)。
所以,可以直接使用AVG()函数计算条件列的占比结果。而在实际过程中,上述条件都可以通过聚合计算满足,比如通过if()
函数构建一个判断列。
例一:计算转换率
举个简单栗子,在牛客直播转换率这个题目中,要求:统计每个科目的转换率(sign_rate(%),转化率=报名人数/浏览人数,结果保留两位小数)。(注:按照course_id升序排序)
已知课程表course_tb如下(其中course_id代表课程编号,course_name表示课程名称,course_datetime代表上课时间):
用户行为表behavior_tb如下(其中user_id表示用户编号、if_vw表示是否浏览、if_fav表示是否收藏、if_sign表示是否报名、course_id代表课程编号):
解法
select
b.course_id,
course_name,
round(avg(if_sign)*100,2)
from behavior_tb b
left join course_tb c on c.course_id=b.course_id
group by 1,2
order by course_id asc
例二:计算新用户占比
计算每天的日活数及新用户占比
注:
- 新用户占比=当天的新用户数÷当天活跃用户数(日活数)。
- 如果in_time-进入时间和out_time-离开时间跨天了,在两天里都记为该用户活跃过。
- 新用户占比保留2位小数,结果按日期升序排序。
解法
select
dt
,count(1) dau
,round(avg(if(cnt=1,1,0)),2) as uv_new_ratio #是新用户返回1, 不是新用户返回0
from
(
selectuid,dt,row_number()over(partition by uid order by dt) as cnt # 判断是否为新用户
from
(#重新构造基础表格,将进入和离开时间放在同一列
select uid, date(in_time) as dt from tb_user_log
Union
select uid,date(out_time) as dt from tb_user_log) t1
) t2
group by 1
order by dt asc
SQL技巧:使用AVG()函数计算占比相关推荐
- MySQL avg()函数
转载自 MySQL avg()函数 MySQL AVG()函数简介 MySQL AVG()函数是一个聚合函数,它用于计算一组值或表达式的平均值. AVG()函数的语法如下: AVG(DISTINCT ...
- oracle平均值语句,Oracle / PLSQL AVG函数
这个Oracle教程解释了如何使用Oracle / PLSQL AVG函数. Oracle / PLSQL AVG函数计算表达式的平均值. Avg 函数对一组行进行操作,并返回一行输出. 空值被avg ...
- sql avg函数使用格式_SQL AVG-SQL平均函数用语法示例解释
sql avg函数使用格式 什么是SQL平均(AVG)函数? (What is the SQL Average (AVG) Function?) "Average" is an A ...
- 【3 - 查询】Sql Server - 郝斌(计算列、distinct、between、in、top、null、order by、模糊查询、聚合函数[主要是count()函数] )
课程地址:数据库 SQLServer 视频教程全集(99P)| 22 小时从入门到精通_哔哩哔哩_bilibili 目录 查询(最重要,难度最大) (一)大纲 (二)Scott 表 下载与导入SQ ...
- Serverless 解惑——函数计算如何访问 SQL Server 数据库
函数计算(Function Compute):函数计算 是事件驱动的全托管计算服务.使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码.函数计算为您准备好计算资源,弹性地可靠地运行任务 ...
- 函数计算 Python 连接 SQL Server 小结
python 连接数据库通常要安装第三方模块,连接 MS SQL Server 需要安装 pymssql .由于 pymsql 依赖于 FreeTDS,对于先于 2.1.3 版本的 pymssql,需 ...
- SQL AVG() 函数
SQL AVG() 函数 AVG() 函数 AVG() 函数返回数值列的平均值. SQL AVG() 语法 SELECT AVG(column_name) FROM table_name 演示数据库 ...
- percent sql_使用SQL Server中的PERCENT_RANK函数计算SQL百分位数
percent sql This article explores the SQL Server PERCENT_RANK analytical function to calculate SQL P ...
- # 160_技巧_Power BI 新函数-计算工作日天数
160_技巧_Power BI 新函数-计算工作日天数 一.背景 Power BI 2022 年 7 月 14 日更新了最新版本的,版本号为:2.107.683.0 . 更多更新内容可以查看官方博客: ...
最新文章
- win10下gnuplot的安装和使用
- 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)
- Android 新闻客户端
- cordova使用Gradle构建下载maven太慢,使用阿里云镜像
- python gevent教程_Python的gevent框架的入门教程
- 在dom最前面插入_JavaScript中的DOM
- Spring中,修改注入的bean名称
- 游戏AI的生命力源自哪里?为你揭开MOBA AI的秘密!
- System.SetString - 获取字符串
- 手机音频拼接软件_自媒体视频,手机剪辑有哪些软件推荐?
- 快手“老”矣,尚能饭否?
- mysql优化之前缀索引--带案例分析
- Dubbo源码分析-Spring与Dubbo整合原理与源码分析(二)
- 编译原理 SysY语言的词法分析程序
- Vue项目实战:接口错误拦截与环境设置
- B2B支付平台市场现状研究分析-
- 天津职业技术师范大学计算机研究生,天津职业技术师范大学2021年硕士研究生招生各学院调剂系统开放时间...
- 前端之JS篇(四)——三种循环(forwhiledo...while)
- 打游戏计算机 配置清单,组装电脑配置清单玩游戏用的
- 最牛通达信主升浪精准指标 准确率超高 主图 源码