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

如何在BigQuery中计算各ID睡眠时长超7小时的天数占比

BigQuery 计算各ID睡眠时长超7小时天数占比的正确查询方法

场景1:每条记录对应唯一日期(无重复日期)

直接对原始数据分组计算,用AVG()结合CASE WHEN快速得到占比:

SELECT
  ID,
  FORMAT('%.2f%%', AVG(CASE WHEN sleeptimehrs > 7 THEN 1 ELSE 0 END) * 100) AS sleep_over_7_pct
FROM
  `你的项目ID.你的数据集ID.sleep_data` -- 替换为你的实际表路径
GROUP BY
  ID;

场景2:同一ID存在同一天多条记录(需去重统计天数)

先通过CTE聚合出每个ID每天的睡眠时长(这里用MAX()取当日最长睡眠,可根据需求替换为AVG()等),再计算占比:

WITH daily_sleep_summary AS (
  SELECT
    ID,
    date,
    MAX(sleeptimehrs) AS daily_sleep_hrs -- 按需求调整聚合逻辑
  FROM
    `你的项目ID.你的数据集ID.sleep_data`
  GROUP BY
    ID, date
)
SELECT
  ID,
  FORMAT('%.2f%%', AVG(CASE WHEN daily_sleep_hrs > 7 THEN 1 ELSE 0 END) * 100) AS sleep_over_7_pct
FROM
  daily_sleep_summary
GROUP BY
  ID;

关键逻辑说明

  • CASE WHEN sleeptimehrs > 7 THEN 1 ELSE 0 END:将符合条件的记录标记为1,不符合的标记为0
  • AVG()计算标记值的平均值,乘以100后就是百分比数值
  • FORMAT('%.2f%%', ...):把数值格式化为保留两位小数的百分比字符串(如53.33%)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:32:21