Sql 查找三个工作日的平均值(按小时细分)
我在Bigquery中有一个类似这样的始发地-目的地表,包括工作日、日期、UTC时间/小时和行程计数:Sql 查找三个工作日的平均值(按小时细分),sql,google-bigquery,logic,Sql,Google Bigquery,Logic,我在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
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
我希望得到平均计数
- 每个起点-终点对(纽约市中心车站和libry东侧城市车站)
- 每个给定时间星期一到星期三的平均值
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_day和Period列,因为它只是为了帮助/显示我希望达到的平均天数和日期。换言之,目的是了解正常工作日(在本例中定义为周一至周三)在一天中特定时间的每个始发地-目的地对的平均计数。例如,纽约市中心车站对的时间15的平均计数为9,33,计算方法是取周一、周二和周三15点的计数平均值(即12、8和8的平均值)
我尝试过CASE和WHERE-SQL查询的变体,但还没有掌握如何对此进行查询的逻辑,因此发布任何查询都没有意义。可能还必须创建一个临时表。有人能帮我吗?非常感谢下面是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
这看起来像一个简单的聚合查询。你有什么问题?