在SQL中,如何计算标准偏差,从计算中排除一行?

时间:2015-10-05 17:08:33

标签: sql sql-server-2008 sql-server-2008-r2

我有很多行,有java.net.ConnectException: failed to connect to /10.0.0.2 (port 80): connect failed: ETIMEDOUT (Connection timed out) 10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:124) 10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183) 10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:452) 10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at java.net.Socket.connect(Socket.java:884) 10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117) 10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160) 10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.http.SocketConnector.connectCleartext(SocketConnector.java:67) 10-05 17:19:38.770 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.Connection.connect(Connection.java:152) 10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185) 10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128) 10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341) 10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330) 10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248) 10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433) 10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384) 10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231) 10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at hilz.myapplication.HttpManager.getData(HttpManager.java:22) 10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at hilz.myapplication.MainActivity$MyTask.doInBackground(MainActivity.java:122) 10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295) 10-05 17:19:38.771 12022-14516/hilz.myapplication W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at java.lang.Thread.run(Thread.java:818) 10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: Caused by: android.system.ErrnoException: connect failed: ETIMEDOUT (Connection timed out) 10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at libcore.io.Posix.connect(Native Method) 10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111) 10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at libcore.io.IoBridge.connectErrno(IoBridge.java:137) 10-05 17:19:38.772 12022-14516/hilz.myapplication W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:122) 10-05 17:19:38.773 12022-14516/hilz.myapplication W/System.err: ... 23 more 10-05 17:19:38.810 12022-12022/hilz.myapplication W/System.err: org.json.JSONException: End of input at character 0 of 10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at org.json.JSONTokener.syntaxError(JSONTokener.java:449) 10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at org.json.JSONTokener.nextValue(JSONTokener.java:97) 10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at org.json.JSONArray.<init>(JSONArray.java:92) 10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at org.json.JSONArray.<init>(JSONArray.java:108) 10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at hilz.myapplication.UserDataJsonParser.parseFeed(UserDataJsonParser.java:15) 10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at hilz.myapplication.MainActivity$MyTask.onPostExecute(MainActivity.java:133) 10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at android.os.AsyncTask.finish(AsyncTask.java:651) 10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at android.os.AsyncTask.-wrap1(AsyncTask.java) 10-05 17:19:38.811 12022-12022/hilz.myapplication W/System.err: at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668) 10-05 17:19:38.812 12022-12022/hilz.myapplication W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102) 10-05 17:19:38.812 12022-12022/hilz.myapplication W/System.err: at android.os.Looper.loop(Looper.java:148) 10-05 17:19:38.812 12022-12022/hilz.myapplication W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5417) 10-05 17:19:38.812 12022-12022/hilz.myapplication W/System.err: at java.lang.reflect.Method.invoke(Native Method) 10-05 17:19:38.812 12022-12022/hilz.myapplication W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 10-05 17:19:38.812 12022-12022/hilz.myapplication W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 10-05 19:04:43.849 12022-12030/? I/art: Ignoring second debugger -- accepting and dropping ,&#39;群组&#39;和ID列。我想为每个Value计算Value列的标准偏差。在计算中,我必须排除组中的每个记录并执行计算,然后将结果分配给该行。我怎样才能实现它?

非常感谢。

编辑:我正在使用MS SQL Server 2008 R2

EDIT2:

假设我们有一张表

Group

预期输出

ID    Group    Value
1       A       2.5
2       A       4.1
3       B       3.8
4       B       11.2
5       B       15.4
6       C       0.8
7       C       7.1
8       C       1.0
9       B       5.2
10      A       6.9

某个组的标准偏差计算分配给ID Group Value Std(pseudo values) 1 A 2.5 xxx 2 A 4.1 xxx 3 B 3.8 xxx 4 B 11.2 xxx 5 B 15.4 xxx 6 C 0.8 xxx 7 C 7.1 xxx 8 C 1.0 xxx 9 B 5.2 xxx 10 A 6.9 xxx 列中的各个行。但为了确保独立性,我们将其作为Std

1 个答案:

答案 0 :(得分:1)

根据assupmtion std_x1 = STD(x2, x3, x4, ...)std_x2 = STD(x3, x4, x5, ...)来计算STD,您可以使用此查询:

SELECT  t.ID, 
        t.[Group], 
        t.Value,
        STDEV(t.Value) OVER (PARTITION BY [GROUP] ORDER BY t.ID ASC ROWS UNBOUNDED FOLLOWING) AS std
FROM    tbl t

根据assupmtion std_x1 = STD(x2, x3, x4, ...)std_x2 = STD(x1, x3, x4, x5, ...)来计算STD,您可以使用此查询:

SELECT  t.ID, 
        t.[Group], 
        t.Value,
        (SELECT STDEV(t1.value)
         FROM   tbl t1      
         WHERE t1.[Group] = t.[Group]
         AND t1.ID <> t.ID) AS Std
FROM    tbl t