会话崩溃率:分组平均占比能否高于整体平均占比?
分组平均占比能否高于整体平均占比?
整体崩溃占比查询
SELECT COUNT(*) count, SUM(cast((CAST((session.platform = 1 AND session.iscrashed) OR (session.platform = 2 AND session.iscrashed) AS int)) as int)) total_crashed FROM session WHERE appid = '4ef36d' AND (CAST(session.uploadedon AS timestamp) >= timestamp '2023-02-07 00:00:00' AND CAST(session.uploadedon AS timestamp) <= timestamp '2023-03-07 23:59:59')
查询结果:总会话数7896,崩溃会话数774,整体崩溃占比为 9.80%(774/7896 × 100)。
按月分组崩溃占比查询
SELECT FORMAT_DATETIME(session.uploadedon,'MMM yyyy') session_uploaded_month, count(1) as count, SUM(cast((CAST((session.platform = 1 AND session.iscrashed) OR (session.platform = 2 AND session.iscrashed) AS int)) as int)) session_is_crashed FROM hive.prod_views.session WHERE appid = '4ef36d' AND (CAST(session.uploadedon AS timestamp) >= timestamp '2023-02-07 00:00:00' AND CAST(session.uploadedon AS timestamp) <= timestamp '2023-03-07 23:59:59') GROUP BY FORMAT_DATETIME(session.uploadedon,'MMM yyyy')
查询输出:
+----------------------+-----+------------------+ |session_uploaded_month|count|session_is_crashed| +----------------------+-----+------------------+ |Feb 2023 |7227 |774 | |Mar 2023 |669 |0 | +----------------------+-----+------------------+
2月崩溃占比为 10.70%(774/7227 × 100),高于整体占比。
当然可能出现分组占比高于整体的情况,核心原因是整体占比是加权平均,权重为各分组的会话总数,而分组自身的占比是该组的局部比例。
拿你的案例来说:整体9.80%的崩溃率是2月(7227个会话,10.70%崩溃率)和3月(669个会话,0%崩溃率)的加权平均。2月的高崩溃率被3月的0崩溃率拉低,最终得到整体值,所以2月的局部占比自然高于整体。
再举个更清晰的例子:
- A组:100个会话,20个崩溃,占比20%
- B组:900个会话,70个崩溃,占比7.78%
- 整体:(20+70)/(100+900)=9%
这里A组的20%就远高于整体的9%——只要分组间的崩溃率存在差异,就必然会有部分分组的占比高于整体,另一部分低于整体,这是加权平均的必然结果。
内容的提问来源于stack exchange,提问作者Azima
相关产品推荐
相关产品推荐

