我想使用sql语句来查询一条记录中的各个字段中的最大值、最小值以及除去0值以外的所有数值的平均值(在这条记录中,除了有数值的字段外,还有文本的字段)。
我知道,sql语句可以使用min、max、count等函数来计算相关值,但它是对一个表中的纵向的多条记录进行计算,而我的这个要求是按照表中一条记录即横向的来进行计算。
我是一个初学者,问题可能有点简单,请大家不要笑话我。
我知道,sql语句可以使用min、max、count等函数来计算相关值,但它是对一个表中的纵向的多条记录进行计算,而我的这个要求是按照表中一条记录即横向的来进行计算。
我是一个初学者,问题可能有点简单,请大家不要笑话我。
解决方案 »
- 版权问题,好复杂,求真解
- 怎么判断字段为空
- delphi8编译Vcl Form application出错?
- 问题还是没解决,在这里抛分请高手了!
- 如何让子窗口显示在windows任务栏上
- 求一算法,不会太难,大家说说你的想法,可能会给到别人思路。(非纯算法题)
- 怎样让同一个程序不能在同一电脑上重复运行?
- 数据恢复的问题,急
- 三层开发:保存图片(IPicture,SetOlePicture,GetOlePicture)
- 关于FlatStyle for D5的问题
- 请问ListBox的Canvas的BrushCopy()和CopyRect()在功能有什么区别吗?欢迎讨论
- 在delphi7里,QuickReport组件放在什么位置了,我怎么找不到啊。:(
这在SQL语句中还没法实现,你可以把记录读出来后,自己在程序中进行处理。
minvalue,
avervalue)来在ONCALCULATEFIELD中求
求最大值、最小值、平均值
在ONCACULATEFIELD中写入以下代码,
with dataset do
begin
//最大
fieldbyname('maxvalue').asfloat:=fields[0].asfloat;
//最小
fieldbyname('minvalue').asfloat:=fields[0].asfloat;
//平均
fieldbyname('avervalue').asfloat:=0;
for i:=1 to fieldcount-1 do
begin
if fields[i].asfloat>fieldbyname('maxvalue').asfloat then
fieldbyname('maxvalue').asfloat:=fields[i].asfloat;
if fields[i].asfloat<fieldbyname('minvalue').asfloat then
fieldbyname('minvalue').asfloat:=fields[i].asfloat;
fieldbyname('avervalue').asfloat:=fields[i].asfloat+fieldbyname ('avervalue').asfloat;
end;
if fieldbyname('avervalue').asfloat>0 then
fieldbyname('avervalue').asfloat:=fieldbyname('avervalue').asfloat/fieldcount;
end;