求感觉比较难写的sql语句
基于图
想要实现:
对于第二采油作业区我只显示出两条数据即2012-07-03 09:00:00.00,2012-07-03 10:00:00.00两个点数据
我还想算一个值就是对于每一条数据的(InPipePressure×AccumulateWater)再加上下一条同一个点的数据的(InPipePressure×AccumulateWater)等等最后得到一个sum(InPipePressure×AccumulateWater)同一个点的sum(AccumulateWater)
avg(sum(InPipePressure×AccumulateWater)/sum(AccumulateWater))
最后想要展示的就是
第二采油作业区 2012-07-03 09:00:00.000 (((67*0.4)+(45*0.4)+(80*0.4)+(57*0.4))/(67+45+57))(显示具体算出来的值)
第二采油作业区 2012-07-03 10:00:00.000 (((58*0.4)+(45*0.4)+(79*0.4)+(57*0.4))/(56+45+57))(显示具体算出来的值)
[解决办法]
建议你提供详细测试数据和期待结果
[解决办法]
- SQL code
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')BEGIN DROP TABLE tbaENDGOCREATE TABLE tba( OperationAreaName VARCHAR(100), StationName VARCHAR(100), ReceiveTime VARCHAR(100), InPipePressure FLOAT, AccumulateWater INT)GOINSERT INTO tbaSELECT '第二采油作业区', '枣三注水站', '2012-07-03 09:00:00.000', 0.4, 67 UNIONSELECT '第二采油作业区', '枣三注水站', '2012-07-03 10:00:00.000', 0.4, 58 UNIONSELECT '第二采油作业区', '枣四注水站', '2012-07-03 09:00:00.000', 0.4, 45 UNIONSELECT '第二采油作业区', '枣四注水站', '2012-07-03 10:00:00.000', 0.4, 45 UNIONSELECT '第二采油作业区', '枣五注水站', '2012-07-03 09:00:00.000', 0.4, 80 UNIONSELECT '第二采油作业区', '枣五注水站', '2012-07-03 10:00:00.000', 0.4, 79 UNIONSELECT '第二采油作业区', '家五接转站', '2012-07-03 09:00:00.000', 0.4, 57 UNIONSELECT '第二采油作业区', '家五接转站', '2012-07-03 10:00:00.000', 0.4, 56GOSELECT OperationAreaName,ReceiveTime,SUM(InPipePressure * AccumulateWater) / SUM(AccumulateWater * 1.0) AS valueFROM tbaGROUP BY OperationAreaName,ReceiveTime
[解决办法]
表示看不太懂你的逻辑
9:00
(((67*0.4)+(45*0.4)+(80*0.4)+(57*0.4))/(67+45+57))
10:00为什么不是:
(((58*0.4)+(45*0.4)+(79*0.4)+(56*0.4))/(58+45+56))
[解决办法]
- SQL code
--> 测试数据:[test]if object_id('[test]') is not null drop table [test]create table [test]([OperationAreaName] varchar(14),[StationName] varchar(10),[ReceiveTime] datetime,[InPipePressure] numeric(2,1),[AccumulateWater] int)goinsert [test]select '第二采油作业区','枣三注水站','2012-07-03 09:00:00.000',0.4,67 union allselect '第二采油作业区','枣三注水站','2012-07-03 10:00:00.000',0.4,58 union allselect '第二采油作业区','枣四注水站','2012-07-03 09:00:00.000',0.4,45 union allselect '第二采油作业区','枣四注水站','2012-07-03 10:00:00.000',0.4,45 union allselect '第二采油作业区','枣五注水站','2012-07-03 09:00:00.000',0.4,80 union allselect '第二采油作业区','枣五注水站','2012-07-03 10:00:00.000',0.4,79 union allselect '第二采油作业区','家五接转站','2012-07-03 09:00:00.000',0.4,57 union allselect '第二采油作业区','家五接转站','2012-07-03 10:00:00.000',0.4,56goselect OperationAreaName, ReceiveTime, sum(InPipePressure*AccumulateWater)/SUM([AccumulateWater]) as Totalfrom testgroup by OperationAreaName, ReceiveTime/*OperationAreaName ReceiveTime Total-----------------------------第二采油作业区 2012-07-03 09:00:00.000 0.400000第二采油作业区 2012-07-03 10:00:00.000 0.400000*/