我正在尝试创建一个基本上模仿上面图片的SQL查询。我当月有date
和profit
做。我必须使用“收入”列跟踪利润,然后找到feb
和mar
之间的利润。
这是我的代码:
SELECT
pickup_datetime,
total_amount,
SUM(total_amount) OVER (order by pickup_datetime) AS Revenue
FROM bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2018
答案 0 :(得分:2)
戈登是非常正确的,您要使用累积和。同样,评论者也对子查询提出了建议,但它们需要使用限制条款。
出租车公共数据集存在问题的原因是,该数据是在时间戳级别进行键控的,因此会留下大量的唯一数据来运行累计总和。通过在子查询中转换日期,您将可以解决此问题。
SELECT
pickup_datetime AS Date,
total_amount,
SUM(total_amount) OVER (ORDER BY pickup_datetime) AS Revenue
FROM (
SELECT
DATE(pickup_datetime) AS pickup_datetime,
sum(total_amount) AS total_amount
FROM
`bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2018`
GROUP BY 1)
ORDER BY 1
此处没有运行时问题:Query complete (4.7 sec elapsed, 2.5 GB processed)
。
如果您还有其他问题,请告诉我。
答案 1 :(得分:0)
您似乎想要一个累加的总和。假设您有一个真实的日期列:
select month, profit,
sum(profit) over (order by month) as revenue
from t;