问题描述
我正在尝试重新创建下面的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 (将#修改为@)