简体   繁体   English

使用 Big Query SQL 我可以实现以下减法(减去两行值并将其替换为该值)?

[英]Using Big Query SQL I can I achieve the following subtraction ( subtract two row values and replace it with that value )?

application应用 buildingid建筑编号 dashboarding_tag dashboarding_tag value价值
Abacus算盘 BLD01 BLD01 Heating_System_Energy_Consumption Heating_System_Energy_Consumption 3000.00 3000.00
Abacus算盘 BLD02 BLD02 Heating_System_Energy_Consumption Heating_System_Energy_Consumption 1000.00 1000.00
Abacus算盘 BLD04 BLD04 Heating_System_Energy_Consumption Heating_System_Energy_Consumption 1000.00 1000.00
Abacus算盘 BLD05 BLD05 Heating_System_Energy_Consumption Heating_System_Energy_Consumption 500.00 500.00
Abacus算盘 BLD02 BLD02 MVHR_Energy_Consumption MVHR_Energy_Consumption 300.00 300.00
Abacus算盘 BLD03 BLD03 MVHR_Energy_Consumption MVHR_Energy_Consumption 900.00 900.00
Abacus算盘 BLD04 BLD04 MVHR_Energy_Consumption MVHR_Energy_Consumption 50.00 50.00
Abacus算盘 BLD05 BLD05 MVHR_Energy_Consumption MVHR_Energy_Consumption 80.00 80.00
Abacus算盘 BLD06 BLD06 MVHR_Energy_Consumption MVHR_Energy_Consumption 200.00 200.00
Forell弗雷尔 BLD07 BLD07 Heating_System_Energy_Consumption Heating_System_Energy_Consumption 0.00 0.00
Forell弗雷尔 BLD08 BLD08 Heating_System_Energy_Consumption Heating_System_Energy_Consumption 50.00 50.00
Forell弗雷尔 BLD09 BLD09 Heating_System_Energy_Consumption Heating_System_Energy_Consumption -5.00 -5.00
Forell弗雷尔 BLD10 BLD10 Heating_System_Energy_Consumption Heating_System_Energy_Consumption -30.00 -30.00

to

application应用 buildingid建筑编号 dashboarding_tag dashboarding_tag value价值
Abacus算盘 BLD01 BLD01 Heating_System_Energy_Consumption Heating_System_Energy_Consumption 3000.00 3000.00
Abacus算盘 BLD02 BLD02 Heating_System_Energy_Consumption Heating_System_Energy_Consumption 700.00 700.00
Abacus算盘 BLD04 BLD04 Heating_System_Energy_Consumption Heating_System_Energy_Consumption 950.00 950.00
Abacus算盘 BLD05 BLD05 Heating_System_Energy_Consumption Heating_System_Energy_Consumption 420.00 420.00
Abacus算盘 BLD02 BLD02 MVHR_Energy_Consumption MVHR_Energy_Consumption 300.00 300.00
Abacus算盘 BLD03 BLD03 MVHR_Energy_Consumption MVHR_Energy_Consumption 900.00 900.00
Abacus算盘 BLD04 BLD04 MVHR_Energy_Consumption MVHR_Energy_Consumption 50.00 50.00
Abacus算盘 BLD05 BLD05 MVHR_Energy_Consumption MVHR_Energy_Consumption 80.00 80.00
Abacus算盘 BLD06 BLD06 MVHR_Energy_Consumption MVHR_Energy_Consumption 200.00 200.00
Forell弗雷尔 BLD07 BLD07 Heating_System_Energy_Consumption Heating_System_Energy_Consumption 0.00 0.00
Forell弗雷尔 BLD08 BLD08 Heating_System_Energy_Consumption Heating_System_Energy_Consumption 50.00 50.00
Forell弗雷尔 BLD09 BLD09 Heating_System_Energy_Consumption Heating_System_Energy_Consumption -5.00 -5.00
Forell弗雷尔 BLD10 BLD10 Heating_System_Energy_Consumption Heating_System_Energy_Consumption -30.00 -30.00

Notice how the values in row 2,3 and 4 changed on table 2 based on values in row 5,7,8.请注意表 2 中第 2、3 和 4 行中的值如何根据第 5、7、8 行中的值进行更改。

The logic is, if the application is Abacus, then always replace the value of the Heating_System_Energy_Consumption such that:逻辑是,如果应用程序是 Abacus,则始终替换 Heating_System_Energy_Consumption 的值,以便:

Heating_System_Energy_Consumption=Heating_System_Energy_Consumption-MVHR_Energy_Consumption for each building Heating_System_Energy_Consumption=Heating_System_Energy_Consumption-MVHR_Energy_Consumption 每个建筑物

Consider below approach考虑以下方法

select * except(value), 
  if(dashboarding_tag = 'Heating_System_Energy_Consumption', 
    value - sum(if(dashboarding_tag = 'MVHR_Energy_Consumption', value, 0)) over(partition by application, buildingid), 
  value) as value
from your_table

if applied to sample data in your question - output is如果应用于您问题中的样本数据 - output 是

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何在大查询中根据时间戳最小最大值查询按某些类别分组的两个值的减法 - How can I query subtraction of two values grouped by certain categories based on timestamp min max on big query 我可以从firebase中减去两个字段吗? - Can I subtract two fields from firebase? 如何将值中包含换行符的 CSV 数据导入 GCloud Big Query 表? - How can I import CSV data with newline characters in its values into a GCloud Big Query table? 将结构值转换为大查询中的行 - Convert struct values to row in big query 我能够对值上的变量应用 firebase 实时数据库查询 我想对同一个变量应用两个值的查询 - I am able to aply firebase realtime database query for on variable on value i want to apply query for two values to the same variable 大查询如何用上一行的值填充单元格值 - Big Query How to fill the cell value with the value from previous row 如果我使用 Firebase/Firestore 查询返回值,如何返回 TableView 数据源值? - How do I return TableView datasource values if I'm using Firebase/Firestore to query the returning value? Big_query SQL 获得单行结果而不是两行 - Big_query SQL To have single row result instead of two rows 如何替换 Redshift 中的 JSON 值? - How can i replace JSON values in Redshift? 有没有办法在 Big Query 中加入一对多关系? 我想使用完全外部连接重复值,但它返回内部连接 - Is there a way to have 1 to many relationship join in Big Query? I want to repeat values using full outer join but it returns inner join
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM