读书人

求感觉比较难写的sql话语

发布时间: 2012-07-31 12:33:47 作者: rapoo

求感觉比较难写的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*/ 

读书人网 >SQL Server

热点推荐