gpt4 book ai didi

sql - 未定义行数的计算

转载 作者:行者123 更新时间:2023-12-04 08:01:10 25 4
gpt4 key购买 nike

考虑到我们可能有一行、两行、三行或更多行,我想添加一个计算。我们可以使用关系获取所有数据,但我有点卡住了,因为关系的数量未定义。
例如,作为来源:

SELECT 123 AS id
,250 AS amount
,225 AS debt
,NULL AS relation
,1 AS rn
UNION ALL
SELECT 124 AS id
,150 AS amount
,25 AS debt
,123 AS relation
,2 AS rn
UNION ALL
SELECT 125 AS id
,160 AS amount
,50.25 AS debt
,124 AS relation
,3 AS rn
UNION ALL
SELECT 126 AS id
,80 AS amount
,25 AS debt
,125 AS relation
,4 AS rn
源表


ID
数量
债务
关系



123
250
225
空值
1

124
150
25
123
2

125
160
50.25
124
3

126
80
25
125
4


结束表


ID
数量
债务
关系

校准


123
250
225
空值
1
250

124
150
25
123
2
22.5

125
160
50.25
124
3
7.5375

126
80
25
125
4
3.75


我需要应用如下计算:
  • 第 1 行:金额
  • 第 2 行:row2.debt*row1.debt/row1.amount
  • 第 3 行:row3.debt*row2.debt/row2.amount*row1.debt/row1.amount
  • 第 4 行:row4.debt*row3.debt/row3.debt*row2.debt/row2.amount*row1.debt/row1.amount
  • 等等。

  • 我正在使用 dbt,但很高兴听到 BigQuery 或其他 SQL,因为我真的很好奇如何做到这一点。

    最佳答案

    一点数学可以帮助这里 - 见下文

    select *,
    ifnull(
    round(exp(sum(ln(debt)) over(order by id rows between unbounded preceding and current row))
    / exp(sum(ln(amount)) over(order by id rows between unbounded preceding and 1 preceding)), 2),
    amount
    ) cal
    from `project.dataset.table`
    如果应用于您问题中的样本数据 - 输出是
    enter image description here
    注意:我正在使用 order by id假设 id column 定义行的顺序。您可以根据需要进行调整

    关于sql - 未定义行数的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66456863/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com