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

时间:2018-07-04 18:27:33

标签: sql google-bigquery

我是BigQuery上的SQL新手,并且在必须编译的项目上受阻。

我被要求在一个甚至不算总收入的数据库中找到销售额的逐年增长...我知道我必须组合各种请求,但无法弄清楚如何计算销售增长。

这是我的位置:

enter image description here 是否有人对此有见识?

非常感谢!

3 个答案:

答案 0 :(得分:1)

(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 :(得分:1)

以下是用于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

答案 2 :(得分:0)

我尝试了您的信息(加上我的2007年数据),然后到达了这里:

SELECT
  year,
  sum(revenue) as year_sum
FROM
  YearlyRevenue.SportCompany
GROUP BY
  year
ORDER BY 
  year_sum

其结果是:

R年year_sum
1 2005 1.159E9
2 2006 1.4953E9
3 2007年1.5708E9

现在应该添加%增长。看看here以获取灵感。

如果您没有成功,请告诉我,我将尽力而为,没有保证。