| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6369 人关注过本帖
标题:CALCULATE命令中 sum(),AVG()等与单独的sum(),AVG()等有何区别?
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:10 
CALCULATE命令中 sum(),AVG()等与单独的sum(),AVG()等有何区别?
CALCULATE对表中的字段或包含字段的表达式进行财务和统计操作。
CALCULATE命令中 sum(),AVG()等与单独的sum(),AVG()等有何区别?
计算结果是一样的,
是不是CALCULATE命令时可一次性对某个字段要作何种计算写在一起?
CLCULATE AVG(order_amt), MIN(order_amt), MAX(order_amt)
独立函数是不是分别书写,如avg order _amt
                        min order_amt
请行家指教!
搜索更多相关主题的帖子: 表达式 财务 统计 
2016-04-08 10:29
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:7 
CALCULATE命令中的 sum(),AVG()等与单独的sum(),AVG()其功能是一样的,但使用方式不一样。
函数不能独立使用,只能被调用。或者命令调用函数,或者函数调用函数。
命令可以独立使用。

独立函数分别是这么书写的:
? AVG(order_amt)
? MIN(order_amt)
? MAX(order_amt)

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-04-08 10:51
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:7 
原理就是遍历表记录统计
2016-04-08 10:52
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
与相似的独立函数无关。
如MAX()与CALCULATE用到的MAX()是两回事。
2016-04-08 10:56
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
这样比较看看:
程序代码:
CREATE CURSOR tt (f1 I)
INSERT INTO tt VALUES (1)
INSERT INTO tt VALUES (3)
INSERT INTO tt VALUES (2)
CALCULATE MAX(f1), MIN(f1) TO nMax, nMin
?nMax, nMin
nMin = nMax
nMax = 0
SCAN 
    nMax = MAX(nMax, f1)
    nMin = MIN(nMin, f1)
ENDSCAN
?nMax, nMin
2016-04-08 11:05
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
独立函数 Max()、Min() 是横向的比较,CALCULATE 命令内置的函数是纵向的遍历,两个是不一样的。

不好意思,是我乌龙了。
难为情。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-04-08 12:45
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
以下是引用吹水佬在2016-4-8 11:05:41的发言:

这样比较看看:
CREATE CURSOR tt (f1 I)
INSERT INTO tt VALUES (1)
INSERT INTO tt VALUES (3)
INSERT INTO tt VALUES (2)
CALCULATE MAX(f1), MIN(f1) TO nMax, nMin
?nMax, nMin
nMin = nMax
nMax = 0
SCAN  
    nMax = MAX(nMax, f1)
    nMin = MIN(nMin, f1)
ENDSCAN
?nMax, nMin
上面代码运行结果:
图片附件: 游客没有浏览图片的权限,请 登录注册

我把代码稍作变了一下:
CREATE CURSOR tt (f1 I)
INSERT INTO tt VALUES (1)
INSERT INTO tt VALUES (3)
INSERT INTO tt VALUES (2)
CALCULATE MAX(f1), MIN(f1) TO nMax, nMin

nMin = nMax
nMax = 0
SCAN
    nMax = MAX(nMax, f1)
    nMin = MIN(nMin, f1)

?'nMax',nMax, 'nMin', nMin  &&有循环体内显示
ENDSCAN
图片附件: 游客没有浏览图片的权限,请 登录注册

看不出有何不同?
2016-04-08 14:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
以下是引用sylknb在2016-4-8 14:19:28的发言:

上面代码运行结果:

我把代码稍作变了一下:
CREATE CURSOR tt (f1 I)
INSERT INTO tt VALUES (1)
INSERT INTO tt VALUES (3)
INSERT INTO tt VALUES (2)
CALCULATE MAX(f1), MIN(f1) TO nMax, nMin

nMin = nMax
nMax = 0
SCAN
    nMax = MAX(nMax, f1)
    nMin = MIN(nMin, f1)

?'nMax',nMax, 'nMin', nMin  &&有循环体内显示
ENDSCAN

看不出有何不同?

讨论的不是统计结果,是 MAX(f1)、MIN(f1) 与  MAX(nMax, f1)、MIN(nMin, f1)不能混淆。
2016-04-08 14:58
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
讨论的不是统计结果,是 MAX(f1)、MIN(f1) 与  MAX(nMax, f1)、MIN(nMin, f1)不能混淆
是不是MAX(nMax, f1)、MIN(nMin, f1)是横向比较,必须有一个比较值(f1)
MAX(f1)、MIN(f1)它是纵向比较
上述理介对否?
2016-04-08 15:34
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
以下是引用sylknb在2016-4-8 15:34:44的发言:

讨论的不是统计结果,是 MAX(f1)、MIN(f1) 与  MAX(nMax, f1)、MIN(nMin, f1)不能混淆
是不是MAX(nMax, f1)、MIN(nMin, f1)是横向比较,必须有一个比较值(f1)
MAX(f1)、MIN(f1)它是纵向比较
上述理介对否?

概念不同,含意也不同,两者各不相干。
MAX(f1)、MIN(f1)是CALCULATE命令的子项,是CALCULATE命令专属的。
MAX(nMax, f1)、MIN(nMin, f1)是标准函数,可在任何语句中使用。
2016-04-08 15:59
快速回复:CALCULATE命令中 sum(),AVG()等与单独的sum(),AVG()等有何区别? ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018586 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved