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

如何计算各流媒体平台儿童向内容的占比?

问题描述

我有一张名为streaming的表,包含service(平台)和genre(类型)两个字段。

我先执行了以下查询,筛选出所有儿童向内容:

SELECT * 
FROM streaming 
WHERE genre LIKE '%kids%' 
   OR genre LIKE '&family&'
   OR genre LIKE '%children%';

执行后返回了171行数据。

随后我编写了统计各平台儿童向内容数量的SQL:

SELECT 
    service, 
    COUNT(CASE WHEN genre LIKE '%kids%' 
                 OR genre LIKE '&family&'
                 OR genre LIKE '%children%'
              THEN 1.0000 
              OR 0.0000
              END ) AS perc_family                        
FROM streaming
GROUP BY service
ORDER BY perc_family;

该语句返回了各平台的儿童向内容数量:

serviceperc_family
disney4
hulu18
amazon42
netflix107

但我需要的是各平台儿童向内容占总儿童向内容的百分比,期望结果如下:

serviceperc_family
disney2.3
hulu10.5
amazon24.6
netflix62.6
解决方案

要得到目标百分比,需用各平台的儿童向内容数量除以总儿童向内容数(171),再转为百分比格式并保留一位小数。修正后的SQL如下:

SELECT 
    service,
    ROUND(
        COUNT(CASE WHEN genre LIKE '%kids%' 
                     OR genre LIKE '&family&'
                     OR genre LIKE '%children%'
                  THEN 1 END) * 100.0 / (SELECT COUNT(*) FROM streaming WHERE genre LIKE '%kids%' OR genre LIKE '&family&' OR genre LIKE '%children%'),
        1
    ) AS perc_family
FROM streaming
GROUP BY service
ORDER BY perc_family;

关键说明:

  1. 子查询(SELECT COUNT(*) FROM streaming WHERE ...)用于获取所有儿童向内容的总数(即171),保证计算的基准准确。
  2. 用每个平台的儿童向内容数量乘以100.0将结果转为百分比维度,再除以总数得到占比。
  3. 使用ROUND(...,1)将结果保留一位小数,匹配期望的输出格式。
  4. 原SQL的CASE语句存在语法错误:THEN 1.0000 OR 0.0000写法无效,正确逻辑是满足条件返回1,不满足则返回NULL(COUNT会自动忽略NULL值,无需额外写ELSE 0)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:30:57