You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写统计主被叫通话次数的正确SQL窗口函数查询

解决方案

你需要为两个统计指标分别编写对应的窗口函数,调整PARTITION BY的分区逻辑即可:

  • 按日期统计的[How_many_calls_to_num_per_day]:按[From_Number]、[To_Number]、[Date]三个字段分区,统计同一主叫、同一被叫、同一天的呼叫次数
  • 跨日期总统计的[How_many_calls_to_num]:按[From_Number]、[To_Number]两个字段分区,统计同一主叫对同一被叫的所有历史呼叫总次数

正确的查询语句如下:

SELECT 
    [Date],
    [From_Number],
    [To_Number],
    COUNT(*) OVER (PARTITION BY [From_Number], [To_Number], [Date]) AS [How_many_calls_to_num_per_day],
    COUNT(*) OVER (PARTITION BY [From_Number], [To_Number]) AS [How_many_calls_to_num]
FROM tbl
逻辑说明

你之前的查询存在两个问题:

  1. 分区逻辑错误:原来只按[To_Number]和[Date]分区,没有加入[From_Number],统计的是所有号码对某个被叫当天的呼叫次数,不是指定主叫对指定被叫的呼叫次数
  2. 缺少按日统计的窗口函数,两个指标需要分别用不同分区规则的窗口函数计算,不需要GROUP BY或GROUPING SETS,窗口函数本身就可以在不聚合原数据集的前提下给每行附加统计值。

内容的提问来源于stack exchange,提问作者Anna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:57:02