基于图
想要实现:
对于第二采油作业区我只显示出两条数据即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))(显示具体算出来的值)
想要实现:
对于第二采油作业区我只显示出两条数据即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))(显示具体算出来的值)
OperationAreaName StationName ReceiveTime InPipePressure AccumulateWater
第二采油作业区 枣三注水站 2012-07-03 09:00:00.000 0.4 67
第二采油作业区 枣三注水站 2012-07-03 10:00:00.000 0.4 58
第二采油作业区 枣四注水站 2012-07-03 09:00:00.000 0.4 45
第二采油作业区 枣四注水站 2012-07-03 10:00:00.000 0.4 45
第二采油作业区 枣五注水站 2012-07-03 09:00:00.000 0.4 80
第二采油作业区 枣五注水站 2012-07-03 10:00:00.000 0.4 79
第二采油作业区 家五接转站 2012-07-03 09:00:00.000 0.4 57
第二采油作业区 家五接转站 2012-07-03 10:00:00.000 0.4 56测试的数据想要的结果
第二采油作业区 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))(显示具体算出来的值)
想要的结果
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'tba')
BEGIN
DROP TABLE tba
END
GO
CREATE TABLE tba
(
OperationAreaName VARCHAR(100),
StationName VARCHAR(100),
ReceiveTime VARCHAR(100),
InPipePressure FLOAT,
AccumulateWater INT
)
GO
INSERT INTO tba
SELECT '第二采油作业区', '枣三注水站', '2012-07-03 09:00:00.000', 0.4, 67 UNION
SELECT '第二采油作业区', '枣三注水站', '2012-07-03 10:00:00.000', 0.4, 58 UNION
SELECT '第二采油作业区', '枣四注水站', '2012-07-03 09:00:00.000', 0.4, 45 UNION
SELECT '第二采油作业区', '枣四注水站', '2012-07-03 10:00:00.000', 0.4, 45 UNION
SELECT '第二采油作业区', '枣五注水站', '2012-07-03 09:00:00.000', 0.4, 80 UNION
SELECT '第二采油作业区', '枣五注水站', '2012-07-03 10:00:00.000', 0.4, 79 UNION
SELECT '第二采油作业区', '家五接转站', '2012-07-03 09:00:00.000', 0.4, 57 UNION
SELECT '第二采油作业区', '家五接转站', '2012-07-03 10:00:00.000', 0.4, 56GOSELECT OperationAreaName,ReceiveTime,SUM(InPipePressure * AccumulateWater) / SUM(AccumulateWater * 1.0) AS value
FROM tba
GROUP BY OperationAreaName,ReceiveTime
--> 测试数据:[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
)
go
insert [test]
select '第二采油作业区','枣三注水站','2012-07-03 09:00:00.000',0.4,67 union all
select '第二采油作业区','枣三注水站','2012-07-03 10:00:00.000',0.4,58 union all
select '第二采油作业区','枣四注水站','2012-07-03 09:00:00.000',0.4,45 union all
select '第二采油作业区','枣四注水站','2012-07-03 10:00:00.000',0.4,45 union all
select '第二采油作业区','枣五注水站','2012-07-03 09:00:00.000',0.4,80 union all
select '第二采油作业区','枣五注水站','2012-07-03 10:00:00.000',0.4,79 union all
select '第二采油作业区','家五接转站','2012-07-03 09:00:00.000',0.4,57 union all
select '第二采油作业区','家五接转站','2012-07-03 10:00:00.000',0.4,56
go
select
OperationAreaName,
ReceiveTime,
sum(InPipePressure*AccumulateWater)/SUM([AccumulateWater]) as Total
from
test
group by
OperationAreaName,
ReceiveTime
/*
OperationAreaName ReceiveTime Total
-----------------------------------------------------------------
第二采油作业区 2012-07-03 09:00:00.000 0.400000
第二采油作业区 2012-07-03 10:00:00.000 0.400000
*/
SUM(InPipePressure * AccumulateWater) / SUM(AccumulateWater * 1.0)
= InPipePressure * SUM(AccumulateWater * 1.0) / SUM(AccumulateWater * 1.0)
= InPipePressure
有意义么
会影响结果的是你的group by后面的字段。
还有你需要选择时间的话可以在where后面加条件