如何计算表格中一列数据的标准差???(100分)

  • 主题发起人 主题发起人 海阳
  • 开始时间 开始时间

海阳

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠:
本人遇到一个难题:要计算表格中的一列数据的标准差,已经查到了函数:stddev(),但是
它的参数要求是一个数组,而我不知道怎么样以数组的形式访问这列数据,哪位高人可指教
某家!!!
另,sql语言中也有这样的一个函数:stdev(),stdevp(),而且我也会用,只是放到
tquery控件中就不行,错误提示为:“capbility not supported”。
急盼高人指点!!!!!!!!!!!!
海阳
 
将表格中这一列数读到一个动态数组中
 
萧兄:
我对动态数组不是很熟悉,你能给我一个详细的的解释吗,一段代码也行!!
另,表中的数据有可能会很多很多(数千条),用数组的形式处理是不是会引起资源的不足??
海阳
 
var
DynArray:Array of Real;
i:Integer;
begin
with Query1 do
begin
Close;
Sql.Text:='select count(*) from 表';
Open;
SetLength(DynArray,Fields[0].AsInteger);
Close;
Sql.Text:='select Field1 from 表';
Open;
First;
i:=1;
while not eof do
begin
DynArray:=Fields[0].AsFloat;
Next;
i:=i+1;
end;
close;
end;
end;

做完计算后用DynArray:=nil来释放内存空间。
 
不管这段代码好不好用(我指速度,因为我现在顾不上测试),我先感谢二位仁兄的帮忙,
另外我也发现这个网站实在太有人气了,比起我前一段时间所上的那几个网好多了,回应
非常快,我很高兴,不知二位是否还什么好地方推荐,老弟先谢了!
再有,有没有更简便的方法,例如sum(yw)这样的写法呢? 或是有没有直接以数组形式
来引用表格的某一列(我指这一列数据,而非fields[])?
(分数我会在明天或后天分配)再次感谢二位!!!!!!!
海阳
 
tquery控件中就不行,错误提示为:“capbility not supported”。

tquery用的是BDE客户端的SQL解析,不支持该函数,需要设置BDE,让Server端解析
该SQL语句,或则使用tadoquery
 
我调用的是桌面数据表,不用server,这种情况下怎么设置BDE才合适呢?老兄是否能给
一个详细的解答呢?
关于Tadoquery我还没有使用过,有机会的话,我会试一下的!!
海阳
 
所谓的Server端解析是数据库解析,而不是程序解析,程序能解析的脚本有限
到控制面版->BDE Administrator->设置你的数据库配置
好像是SQLQryMode为Server,里面的几个参数你可以看看

Tadoquery没有这样的问题
 
感谢郭兄的建议,我今天会试试这两种方法!!晚上再与你讨论!!!
海阳
 
玉梁兄:
我好像明白了点儿你所说的server端解析,但是我所使用的库为一个桌面数据表,并不
使用服务器,这该怎么办呢? 我试了一下Tadoquery,到现在为止还没有使stdev()(sql的
求标差函数)有效,你能不能再给我解释的详细,最好配合一些调试过的代码!!
海阳(感谢你的建议)
 
我早就已经分配分数了,怎么现在还让我分配?
 
后退
顶部