2015-04-22 84 views
1

所以我有2列我想做一個部門然後我想對結果列做一個stdev我正在嘗試以下的SQL,但它不工作我還沒有弄清楚如何將內部選擇保存爲變量,然後對該變量執行stdev。我吠叫錯了樹嗎?有任何想法嗎?計算列上的SQL STDEV

select 
stdev(
    select 
     convert(decimal(20,5),convert(decimal(20,5),(s.received)) 
     /convert(decimal(20,5),(s.sent)))*100 as DDR 
     from someTable s 
     where s.SomethingName = 'thisthingsName' 
     and s.Date like '2015-04-16%' 
) 
from someTable 
+0

STDEV旨在用於*列*,而不是整個查詢。 –

+2

你正在處理's.Date'的方式太糟糕了...... –

+0

我知道,不幸的是日期被設置爲一個字符串而不是日期......我與此無關。 – user2136748

回答

1
select 
    stdev(
     convert(decimal(20,5),convert(decimal(20,5),(s.received)) 
     /convert(decimal(20,5),(s.sent)))*100 
    ) as deviation 
from 
    someTable s 
where 
    s.SomethingName = 'thisthingsName' 
    and s.Date like '2015-04-16%' 

請注意,如果你的SQL Server的版本是2008或更高版本,你也可以做

and cast(s.Date as date) = '2015-04-16' 

,並在SQL Server 2012中,你可以做

and cast(s.Date as date) = DATEFROMPARTS(2015,04,16) 

而不是日期字段上的(非確切!)字符串比較。