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

基于天气时间按小时分组统计共享单车骑行订单量的实现方法

实现方案

默认你使用SQL进行统计,可根据你实际使用的工具、表名、字段名调整对应参数。

SQL实现(最常用统计场景)

假设两张表关联后的合并表名为bike_weather_merged,核心逻辑为先将订单时间截断到小时粒度,再按小时时间+所需天气维度字段分组,最后统计每组的订单总量即可,示例代码如下:

SELECT
  -- 时间截断到小时,不同数据库语法略有差异,可按需替换
  DATE_TRUNC('hour', order_time) AS order_hour,
  -- 按需保留你需要的天气维度字段,比如天气类型、气温区间、降水量等
  weather_type,
  temperature_range,
  precipitation,
  -- 统计订单总量,加DISTINCT可避免关联产生的重复数据干扰结果,无重复可去掉
  COUNT(DISTINCT order_id) AS total_order_count
FROM bike_weather_merged
-- 可选:添加时间范围过滤条件
-- WHERE order_time >= '2024-01-01' AND order_time < '2024-07-01'
GROUP BY
  order_hour,
  weather_type,
  temperature_range,
  precipitation
ORDER BY order_hour DESC;

不同数据库的时间截断语法适配:

  • MySQL:DATE_FORMAT(order_time, '%Y-%m-%d %H:00:00')
  • PostgreSQL/Spark SQL:DATE_TRUNC('hour', order_time)
  • SQL Server:DATEADD(HOUR, DATEDIFF(HOUR, 0, order_time), 0)

Python Pandas实现

如果你用Python做数据处理,示例代码如下:

import pandas as pd

# 关联后的合并DataFrame记为df
# 1. 生成小时粒度的时间列
df['order_hour'] = df['order_time'].dt.floor('H')

# 2. 按小时+天气维度分组统计订单量
stats_result = df.groupby(
    ['order_hour', 'weather_type', 'temperature_range', 'precipitation'],
    as_index=False
)['order_id'].nunique().rename(columns={'order_id': 'total_order_count'})

# 输出结果
print(stats_result)

常见结果异常排查点

  • 检查两表关联时是否产生了一对多的笛卡尔积,导致订单数据重复,统计时优先对订单ID去重计数
  • 确认订单时间和天气数据的时区一致,避免跨小时、跨天的统计偏差
  • 确认天气数据的关联粒度是否为小时级,避免用全天的天气数据匹配每小时的订单,导致维度对应错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:15:03