【问题标题】:Finding average value of three weekdays, broken down on hours查找三个工作日的平均值,按小时细分
【发布时间】:2020-09-10 18:31:27
【问题描述】:

我在 Bigquery 中有一个这样的起点-终点表,其中包含工作日、日期、UTC 时间/小时和行程次数:

  Origin  Destination   Day     Date    Time Count

NY Station  Downtown    Mon  02.09.2019  15  12
NY Station  Downtown    Mon  02.09.2019  16  10
City libry  Eastside    Mon  02.09.2019  17  10
NY Station  Downtown    Tue  03.09.2019  15  8
NY Station  Downtown    Tue  03.09.2019  16  5
City libry  Eastside    Tue  03.09.2019  17  5
NY Station  Downtown    Wed  04.09.2019  15  8
NY Station  Downtown    Wed  04.09.2019  16  10
City libry  Eastside    Wed  04.09.2019  17  11

我希望得到平均计数

  • 每个起点-目的地对(NY Station-DowntownCity libry-Eastside
  • 周一至周三每个给定时间的平均值

输出应该类似于

Origin    Destination   Avg_Day  Period                    Time Avg_Count

NY Station  Downtown    Mon-Wed  Week1 (02.09.19-04.09.19)  15  9,33
NY Station  Downtown    Mon-Wed  Week1 (02.09.19-04.09.19)  16  8,33
City libry  Eastside    Mon-Wed  Week1 (02.09.19-04.09.19)  17  8,67

忽略 Avg_dayPeriod 列,因为它只是为了帮助/显示我希望达到平均值的日期和日期。换句话说,目的是了解在一天中的特定时间在正常工作日(在本例中定义为周一至周三)每个起点-目的地对的平均计数。例如,NY Station-Downtown 对的时间 15 的平均计数是 9,33,计算方法是取周一、周二和周三 15 点钟的计数平均值(即 12、8和 8)。

我已经尝试过 CASE 和 WHERE SQL 查询的变体,但还没有完全掌握如何为此进行查询的逻辑,因此没有必要发布任何查询。可能还必须创建一个临时表。谁能帮我?非常感谢

【问题讨论】:

  • 这看起来像一个简单的聚合查询。你有什么问题?

标签: sql google-bigquery logic


【解决方案1】:

以下是 BigQuery 标准 SQL

#standardSQL
select
  Origin, 
  Destination, 
  'Mon-Wed' AS Avg_Day,
  FORMAT('Week%i (%s-%s)', week, min_date, max_date) AS Period,
  Time,
  Avg_Count
from (
  SELECT 
    Origin, 
    Destination, 
    'Mon-Wed' AS Avg_Day,
    EXTRACT(WEEK FROM PARSE_DATE('%d.%m.%Y', date)) week, 
    MIN(date) AS min_date, 
    MAX(date) AS max_date,
    Time,
    ROUND(AVG(count), 2) AS Avg_Count
  FROM `project.dataset.table`
  WHERE day IN ('Mon', 'Tue', 'Wed')
  GROUP BY Origin, Destination, Time, week 
)   

如果应用于您问题的样本数据 - 输出是

Row Origin      Destination Avg_Day Period                          Time    Avg_Count    
1   NY Station  Downtown    Mon-Wed Week35 (02.09.2019-04.09.2019)  15      9.33     
2   NY Station  Downtown    Mon-Wed Week35 (02.09.2019-04.09.2019)  16      8.33     
3   City libry  Eastside    Mon-Wed Week35 (02.09.2019-04.09.2019)  17      8.67    

【讨论】:

    猜你喜欢
    • 2021-09-24
    • 2021-01-15
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2021-01-30
    • 2023-03-19
    • 2012-05-29
    • 1970-01-01
    相关资源
    最近更新 更多