如何统计满足duration≥对应节目最大时长90%的行数?
问题描述
现有如下播放事件数据表格:
| title | duration |
|---|---|
| programme a | 1000 |
| programme b | 1500 |
需要统计所有满足**该行的duration至少为对应programme的最大duration的90%**的行数(每行代表一个播放事件,duration为事件持续秒数)。
实现方案
1. Excel/LibreOffice Calc 操作步骤
- 新增列(如C列),计算每行对应programme的最大时长:在C2单元格输入
=MAXIFS(B:B,A:A,A2),下拉填充至所有行。 - 新增列(如D列),标记符合条件的行:在D2单元格输入
=IF(B2>=0.9*C2,1,0),下拉填充。 - 统计总数:在空白单元格输入
=SUM(D:D),结果即为符合条件的行数。
2. SQL 查询语句
假设数据表名为play_events,字段为title和duration,使用窗口函数实现:
SELECT COUNT(*) AS qualified_rows FROM ( SELECT title, duration, MAX(duration) OVER (PARTITION BY title) AS max_duration FROM play_events ) AS sub_query WHERE duration >= 0.9 * max_duration;
3. Python Pandas 代码示例
import pandas as pd # 构造数据(实际场景可通过read_csv等方法读取) df = pd.DataFrame({ 'title': ['programme a', 'programme b'], 'duration': [1000, 1500] }) # 计算每个programme的最大时长 df['max_duration'] = df.groupby('title')['duration'].transform('max') # 统计符合条件的行数 qualified_count = df[df['duration'] >= 0.9 * df['max_duration']].shape[0] print(f"符合条件的行数:{qualified_count}")
内容的提问来源于stack exchange,提问作者Bertie Shaw
相关产品推荐
相关产品推荐

