如何在SQL中编程收入列

时间:2019-05-01 01:52:39

标签: sql google-bigquery

我正在尝试创建一个基本上模仿上面图片的SQL查询。我当月有dateprofit做。我必须使用“收入”列跟踪利润,然后找到febmar之间的利润。

Excel sample picture

这是我的代码:

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

2 个答案:

答案 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;