SQL BigQuery:计算每个时间段的值
我不熟悉BigQuery上的SQL,我被一个必须编译的项目阻塞了 我被要求在一个数据库中查找销售额的同比增长百分比,该数据库甚至不包括收入总和。。。我知道我必须收集各种请求,但我不知道如何计算销售额的增长 以下是我的位置: 有人知道怎么做吗 非常感谢 (1)从您拥有的开始,按产品线分组,以获得今年和去年每一行的收入: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
#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,因为它有更多的功能,并且对财务数据使用数字类型,所以在对数字求和时不会丢失精度。