首页 > 解决方案 > 需要找到每个移动用户消耗的数据总和

问题描述

我有一个表格,其中包含下面提到的示例数据关于数据的说明 - 1. 数据包含日期、手机的 IMEI 号码、SIM NO(仅发送设备重启并发送为 null else)和百分比数据(剩余数据百分比) (如果在此期间关闭了设备数据,则可以为 null)。 在此处输入图像描述

我想用这张表实现的是找到每次数据充值之间消耗的数据量(您可以通过在列中看到 100 来观察充值)。例如,第一次充电是在 2020 年 3 月 4 日完成的,第二次充电是在 2020 年 3 月 12 日完成的,这次充电之间的总数据消耗为 100 - 73 = 27(减去第一次充电和最后一次充电)。这是百分比数字,我可以将其乘以 1024(假设数据以 MB 为单位)。我尝试了几个查询,但无法提出有效的查询。请帮我。

标签: sqlgoogle-bigquery

解决方案


使用累积和来定义区域,然后进行聚合。我将假设 BigQuery:

select imei, min(date) as recharge_date, max(date) as last,
       max(data_usage) - min(data_usage) as data_consumed
from (select t.*,
             countif(data_usage = 100) over (partition by imei order by date) as grp
      from t
     ) t
group by imei, grp;

推荐阅读