在SQL中重新创建移动中位数和移动模式Excel公式

问题描述

我正在尝试重新创建下面的Excel公式/表格,并显示True / False,但是卡住了。

Excel公式: = ABS(ROUND(MEDIAN(C $ 2:C2),0)-ROUND(MODE.SNGL(C $ 2:C2),0))

我有200多行数据,我只需要从第一行到当前行计算的中位数和众数。我可以为SQL中的所有行创建中位数,但这对我来说是不正确的。与模式相同。上面的公式将在Excel单元格D2中并向下填充。在公式末尾调用的变量就是数字 4

任何建议或指示都将非常有用。谢谢!

Excel摘录: Quick view of how this table looks in Excel

用于在SQL中构建此确切表的SQL代码。

    IF NOT EXISTS (
    select * from sysobjects where name='SampleExample' and xtype='U'
) CREATE TABLE SampleExample (
    [Seconds] INT,[Sequence] INT,[Value] NUMERIC(12,9),[Result] NVARCHAR(4)
);
INSERT INTO SampleExample VALUES
    (598,1,236.888453364,N'#N/A'),(740,2,N'True'),(885,3,235.463708639,(1024,4,236.177295446,(1189,5,(1330,6,236.866638064,(1463,7,(1599,8,(1735,9,(1863,10,(1986,11,(2110,12,(2235,13,236.880749464,(2362,14,236.908763647,(2487,15,(2610,16,(2739,17,237.190827727,(2865,18,(3008,19,(3132,20,N'True');

当前中位数查询。我在SQL表中添加了一个名为Filename的列,该列的所有行均具有相同的值。但这会找到数位板中所有行的中位数,而不是当前行的第1行。

Declare @Median AS INT
Select @Median = ( 
    (Select MAX([Value])
    FROM 
        (Select TOP 50 PERCENT [Value],[Filename] 
        FROM SampleExample 
        
        Order by [Filename]) as BOTTOMHALF)
    + 
    (Select MIN([Value])
    FROM
        (Select TOP 50 PERCENT [Value],[Filename]
        FROM SampleExample 
        
        Order by [Filename] desc) as TOPHALF) ) / 2 

当前模式查询:

Declare @Mode as INT
Select @Mode = (
    Select TOP 1 ROUND([Value],0) as MODE
    from SampleExample 
    Group by [Value]
    Order by COUNT(*) DESC
    )

我正在寻找的结果是对/错。我在SQL查询中使用CASE:

CASE WHEN @Variable > @Median - @Mode THEN 'True' ELSE 'False' END AS Result

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)