SQL BigQuery:计算每个时间段的值

SQL BigQuery:计算每个时间段的值,sql,google-bigquery,Sql,Google Bigquery,我不熟悉BigQuery上的SQL,我被一个必须编译的项目阻塞了 我被要求在一个数据库中查找销售额的同比增长百分比,该数据库甚至不包括收入总和。。。我知道我必须收集各种请求,但我不知道如何计算销售额的增长 以下是我的位置: 有人知道怎么做吗 非常感谢 (1)从您拥有的开始,按产品线分组,以获得今年和去年每一行的收入: #standardsql with yearly_sales AS ( select year, product_line, sum(revenue) as revenue fr

我不熟悉BigQuery上的SQL,我被一个必须编译的项目阻塞了

我被要求在一个数据库中查找销售额的同比增长百分比,该数据库甚至不包括收入总和。。。我知道我必须收集各种请求,但我不知道如何计算销售额的增长

以下是我的位置:

有人知道怎么做吗

非常感谢

(1)从您拥有的开始,按产品线分组,以获得今年和去年每一行的收入:

#standardsql
with yearly_sales AS (
select year, product_line, sum(revenue) as revenue
from `dataset.sales`
group by product_line, year
),

year_on_year AS (
select array_agg(struct(year, revenue))
            OVER(partition by product_line ORDER BY year
                 RANGE BETWEEN PRECEDING AND CURRENT ROW) AS data
from yearly_sales
)
(2) 根据您现在在每行中拥有的两个值计算同比增长率(1)从您拥有的开始,按产品线分组,以获得每行今年和去年的收入:

#standardsql
with yearly_sales AS (
select year, product_line, sum(revenue) as revenue
from `dataset.sales`
group by product_line, year
),

year_on_year AS (
select array_agg(struct(year, revenue))
            OVER(partition by product_line ORDER BY year
                 RANGE BETWEEN PRECEDING AND CURRENT ROW) AS data
from yearly_sales
)

(2) 根据您现在每行的两个值计算同比增长

我尝试了您的信息(加上我2007年的编造数据),我来到这里:

SELECT
  year,
  sum(revenue) as year_sum
FROM
  YearlyRevenue.SportCompany
GROUP BY
  year
ORDER BY 
  year_sum
其结果是:

R年总金额
1 2005 1.159E9
2 2006 1.4953E9
3 2007 1.5708E9

现在应该加上%的增长。寻找灵感


如果你不成功,请告诉我,我会尽最大努力,没有任何保证

我尝试了你的信息(加上我编造的2007年数据),我来到这里:

SELECT
  year,
  sum(revenue) as year_sum
FROM
  YearlyRevenue.SportCompany
GROUP BY
  year
ORDER BY 
  year_sum
其结果是:

R年总金额
1 2005 1.159E9
2 2006 1.4953E9
3 2007 1.5708E9

现在应该加上%的增长。寻找灵感


如果你不成功,请告诉我,我会尽最大努力,没有任何保证

下面是BigQuery标准SQL

#standardSQL
SELECT product_line, year, revenue, prev_year_revenue, 
  ROUND(100 * (revenue - prev_year_revenue)/prev_year_revenue) year_over_year_growth_percent
FROM (
  SELECT product_line, year, revenue, 
    LAG(revenue) OVER(PARTITION BY product_line ORDER BY year) prev_year_revenue
  FROM (
    SELECT product_line, year, SUM(revenue) revenue
    FROM `project.dataset.table`
    GROUP BY product_line, year
  )
)
-- ORDER BY product_line, year

下面是BigQuery标准SQL

#standardSQL
SELECT product_line, year, revenue, prev_year_revenue, 
  ROUND(100 * (revenue - prev_year_revenue)/prev_year_revenue) year_over_year_growth_percent
FROM (
  SELECT product_line, year, revenue, 
    LAG(revenue) OVER(PARTITION BY product_line ORDER BY year) prev_year_revenue
  FROM (
    SELECT product_line, year, SUM(revenue) revenue
    FROM `project.dataset.table`
    GROUP BY product_line, year
  )
)
-- ORDER BY product_line, year
一些提示(虽然不是实际答案):如果可以的话,尝试使用标准SQL而不是传统SQL,因为它有更多的功能,并且对财务数据使用数字类型,这样在对数字求和时不会丢失精度。一些提示(虽然不是实际答案):如果可以的话,尝试使用标准SQL而不是传统SQL,因为它有更多的功能,并且对财务数据使用数字类型,所以在对数字求和时不会丢失精度。