第二十二章 SQL函数 CAST(一)
将给定表达式转换为指定数据类型的函数。
将给定表达式转换为指定数据类型的函数。
接受两个坐标并返回以弧度为单位的反正切角的标量数值函数。
注意:IRIS可用,IRIS以下不可用。
{fn ATAN2(y,x)}
y - 指定y轴坐标的数值表达式。x - 指定x轴坐标的数值表达式。ATAN2返回NUMERIC或DOUBLE数据类型。
如果数值表达式是数据类型DOUBLE, ATAN2返回DOUBLE;
否则,返回NUMERIC。
ATAN2采用射线(y,x)的笛卡尔坐标,并以浮点数的形式返回角的正切反(弧)。
用两个坐标的符号来确定笛卡尔坐标。
当x为正值时,ATAN2返回与ATAN(y/x)相同的值。
如果传递一个NULL值,ATAN2将返回NULL。
ATAN2将非数字字符串(包括空字符串("))视为数字值0。
ATAN2返回一个精度为36、刻度为18的值。
ATAN2只能用作ODBC标量函数(使用花括号语法)。
可以使用DEGREES函数将弧度转换为角度。
可以使用RADIANS函数来转换角度到弧度。
下面的例子调用ATAN2:
SELECT {fn ATAN2(15,30)} AS ArcTangent
0.463647609000806116
正如德勤最近的一份报告所强调的,数字孪生的设计和部署是为了实现虚拟协作,吸收和处理大数据,以及协助我们以更有效和安全的方式管理物理世界。
有几个行业在使用数字孪生能力方面取得了重大进展,如汽车、飞机、能源、城市规划和医疗保健等,仅举几例。疫情的影响和对全球经济造成的破坏只会加速全球数字孪生的发展速度和采用。因此,预计到2026年,全球数字孪生市场将达到482亿美元,年复合增长率为58%。虽然目前北美市场拥有最大的份额,但预计亚太市场将在未来几年经历最快的增长。
按照Gartner的说法,数字孪生是现实世界实体或系统的数字代表。数字孪生体的实现是一个封装的软件对象或模型,它反映了一个独特的物理对象、过程、组织、人或其他抽象概念。
数字孪生的设计和部署是复杂的,与其他数字技术密切相关,如云计算、人工智能、物联网、5G网络、区块链和虚拟、增强或混合现实。预计所有这些技术的采用率将对数字孪生产业产生深远影响。迄今为止,系统数字孪生体已经在所有行业中占主导地位,但专家们一致认为,产品和流程数字孪生体类型将在未来几年内上升。
一个标量数值函数,返回角的正切的弧切值(以弧度为单位)。
{fn ATAN(numeric-expression)}
numeric-expression - 一个数值表达式。
这是这个角的正切。ATAN返回NUMERIC或DOUBLE数据类型。
如果数值表达式是数据类型DOUBLE, ATAN返回DOUBLE;
否则,返回NUMERIC。
ATAN接受任何数值,并以浮点数返回角度正切的反(弧)值。
如果传递一个NULL值,ATAN将返回NULL。
ATAN将非数字字符串(包括空字符串("))视为数字值0。
ATAN返回一个精度为36、刻度为18的值。
ATAN只能用作ODBC标量函数(使用花括号语法)。
可以使用DEGREES函数将弧度转换为角度。
可以使用RADIANS函数来转换角度到弧度。
下面的例子展示了ATAN的效果:
SELECT {fn ATAN(0.52)} AS ArcTangent
0.479519291992596165
一个标量数值函数,返回角的正弦的反正弦(以弧度为单位)。
{fn ASIN(numeric-expression)}
numeric-expression - 数值在-1到1之间的数值表达式。
这是这个角的正弦值。ASIN返回NUMERIC或DOUBLE数据类型。
如果数值表达式是数据类型DOUBLE, ASIN返回DOUBLE;
否则,返回NUMERIC。
ASIN以浮点数的形式返回角度正弦的反(弧)值。
numeric-expression的值必须是有符号的十进制数,取值范围为1 ~ -1(含1)。
超出此范围的数字将导致运行时错误,生成SQLCODE -400(发生致命错误)。
如果传递一个NULL值,ASIN将返回NULL。
ASIN将非数字字符串(包括空字符串("))视为数字值0。
ASIN返回一个精度为19、刻度为18的值。
ASIN只能用作ODBC标量函数(使用花括号语法)。
可以使用DEGREES函数将弧度转换为角度。
可以使用RADIANS函数来转换角度到弧度。
下面的例子展示了ASIN对两个正弦的影响。
SELECT {fn ASIN(0.52)} AS ArcSine
0.54685095069594411
SELECT {fn ASIN(-1.00)} AS ArcSine
-1.一个字符串函数,返回字符串表达式的第一个(最左边)字符的整型ASCII码值。
ASCII(string-expression)
{fn ASCII(string-expression)}
string-expression - 字符串表达式,它可以是列的名称、字符串字面值或另一个标量函数的结果,其中基础数据类型可以表示为任何字符类型(如CHAR或VARCHAR)。
CHAR或VARCHAR类型的字符串表达式。如果传入一个NULL或空字符串值,ASCII将返回NULL。
空字符串返回NULL与SQL Server一致。
SELECT ASCII('Z') AS AsciiCode
90
SELECT {fn ASCII('ZEBRA')} AS AsciiCode
90
在执行ASCII转换之前,SQL将数字转换为规范形式。
下面的例子返回55,它是数字7的ASCII值:
SELECT ASCII(+007) AS AsciiCode
55
如果数字以字符串的形式表示,则不执行此数字解析。
下面的例子返回43,它是加(+)字符的ASCII值:
SELECT ASCII('+007') AS AsciiCode
43
一个标量数值函数,返回给定余弦的弧余弦(以弧度为单位)。
{fn ACOS(numeric-expression)}
numeric-expression - 数值在-1到1之间的数值表达式。
这是这个角的余弦值。ACOS返回NUMERIC或DOUBLE数据类型。
如果数值表达式是数据类型DOUBLE, ACOS返回DOUBLE;
否则,返回NUMERIC。
ACOS接受一个数值并以浮点数的形式返回余弦的反(弧)值。
numeric-expression的值必须是有符号的十进制数,取值范围为1 ~ -1(含1)。
超出此范围的数字将导致运行时错误,生成SQLCODE -400(发生致命错误)。
如果传入NULL值,ACOS将返回NULL。
ACOS将非数字字符串(包括空字符串("))视为数字值0。
ACOS返回一个精度为19、刻度为18的值。
ACOS只能用作ODBC标量函数(使用花括号语法)。
可以使用DEGREES函数将弧度转换为角度。
可以使用RADIANS函数来转换角度到弧度。
下面的例子展示了ACOS对两个余弦的影响:
SELECT {fn ACOS(0.52)} AS ArcCosine
1.02394537609895251
SELECT {fn ACOS(-1)} AS ArcCosine
3.医疗数据集应用(这个应用主要目的是获得医疗数据样本来进行自动化机器学习和其他应用)现在有了6个真实世界的医疗数据集(更多数据集在路上,敬请期待!)
赶快来下载吧: https://openexchange.intersystems.com/package/Health-Dataset
返回数值表达式的绝对值的数值函数。
ABS(numeric-expression)
{fn ABS(numeric-expression)}
numeric-expression - 要返回其绝对值的数字。ABS返回与数字表达式相同的数据类型。
ABS返回绝对值,它总是0或正数。
如果数值表达式不是一个数字(例如,字符串'abc',或空字符串''),ABS返回0。
当传递null值时,ABS返回。
请注意,ABS可以用作ODBC标量函数(带有花括号语法),也可以用作SQL通用函数。
这个函数也可以通过调用ABS()方法从ObjectScript中调用:
WRITE $SYSTEM.SQL.Functions.ABS(-0099)
下面的例子展示了ABS的两种形式:
SELECT ABS(-99) AS AbsGen,{fn ABS(-99)} AS AbsODBC
下面的例子展示了ABS如何处理其他一些数字。
在调用ABS之前, SQL将数字表达式转换为规范形式,删除前导和末尾的零,并计算指数。
SELECT ABS(007) AS AbsoluteValue
7
SELECT ABS(-0.ROW子句可以与FIRST_VALUE(字段)和SUM(字段)窗口函数一起使用。
可以为其他windows函数指定它,但不执行任何操作(有或没有ROWS子句的结果相同)。
ROWS子句有两种语法形式:
ROWS framestart
ROWS BETWEEN framestart AND frameend
Framestart和frameend有五个可能的值:
UNBOUNDED PRECEDING /* 从当前分区的开头开始 */
offset PRECEDING /* 开始偏移当前行之前的行数 */
CURRENT ROW /* 从当前行开始 */
offset FOLLOWING /* 继续偏移当前行后面的行数 */
UNBOUNDED FOLLOWING /* 继续到当前分区的末尾 */
ROWS子句语法可以在两个方向上指定一个范围。
例如,在无界前面和1后面之间的行以及在1后面和无界前面之间的行是完全相等的。
ROWS框架的开始语法默认为CURRENT ROW作为范围的第二个未指定的边界。
本文译自 https://community.intersystems.com/post/using-sql-apache-hive-hadoop-bi…
大家好,
在使用Spark做Hadoop时,InterSystems IRIS有一个很好的连接器。但市场上也提供了大数据Hadoop访问的其他优秀替代方案-Aparche Hive。请看区别:
|
HIVE |
SPARK |
|
Hive是一个数据库,用类似于RDBMS数据库的表格形式存储数据。 |
Spark不是一个数据库,它是一个数据分析框架,可以在内存中对大至PB字节的大容量数据进行复杂的数据分析。 |
|
使用称作HiveQL的自己的SQL引擎,数据可以从Hive中抽取出来。只能使用SQLs来抽取数据。 |
Spark既能使用复杂SQLs(Complex SQLs)也能使用MapReduce机制进行数据分析。它支持Java, Scala 和Python写的分析框架。 |
|
Hive在Hadoop之上运行。 |
Spark没有自己专用的存储。实际上,它是从外部的分布式数据存储如运行在Hadoop和MongoDB上的Hive、HBase中抽取数据。 |
指定用于计算聚合和排名的每行“窗口框架”的函数。
在应用WHERE、GROUP by和HAVING子句之后,窗口函数对SELECT查询选择的行进行操作。
窗口函数将一组行中的一个(或多个)字段的值组合在一起,并在结果集中为生成的列中的每一行返回一个值。
虽然窗口函数与聚合函数类似,因为它们将多行结果组合在一起,但它们与聚合函数的不同之处在于,它们本身并不组合行。
窗口函数被指定为SELECT查询中的选择项。
窗口函数也可以在SELECT查询的ORDER BY子句中指定。
窗口函数执行与由PARTITION by子句、ORDER by子句和ROWS子句指定的逐行窗口相关的任务,并为每一行返回一个值。
亲爱的社区开发者们,大家好!
欢迎积极参与新一轮InterSystems开发者竞赛!
随着 InterSystems IRIS 2021.2 预览版 的发布和全新的 LOAD DATA 功能,我们希望将其与最新的竞赛(数据集)结合起来!
竞赛时间: 2021年12月27日-2022年1月16日
奖金总额: $9,450
一个聚合函数,它创建一个串接的值字符串。
XMLAGG([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])
ALL - 可选-指定XMLAGG返回string-expr的所有值的连接字符串。
如果没有指定关键字,这是默认值。DISTINCT - 可选-一个DISTINCT子句,指定XMLAGG返回一个只包含唯一string-expr值的连接字符串。
DISTINCT可以指定BY(colo -list)子句,其中colo -list可以是单个字段,也可以是用逗号分隔的字段列表。string-expr - 计算结果为字符串的SQL表达式。
通常,这是要从其中检索数据的列的名称。%FOREACH(col-list) - 可选-列名或以逗号分隔的列名列表。%AFTERHAVING - 可选-应用在HAVING子句中的条件。XMLAGG聚合函数返回由string-expr中的所有值组成的串接字符串。
返回值的数据类型为VARCHAR,默认长度为4096。
XMLAGG(或XMLAGG ALL)返回一个字符串,该字符串包含一个由所选行中string-expr的所有值组成的连接字符串。返回数据集统计方差的聚合函数。
VARIANCE([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
VAR_SAMP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
VAR_POP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
ALL - 可选-指定统计方差函数返回表达式中所有值的方差。
如果没有指定关键字,这是默认值。DISTINCT - 可选- DISTINCT子句,指定统计方差函数返回不同(唯一)表达式值的方差。
DISTINCT可以指定BY(colo -list)子句,其中colo -list可以是单个字段,也可以是用逗号分隔的字段列表。expression - 任何有效的表达式。
通常是包含要分析方差的数据值的列的名称。%FOREACH(col-list) - 可选-列名或以逗号分隔的列名列表。返回指定列值之和的聚合函数。
SUM([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
ALL - 可选-指定SUM返回表达式中所有值的和。
如果没有指定关键字,这是默认值。DISTINCT - 可选-一个DISTINCT子句,指定SUM返回表达式中不同(唯一)值的和。
DISTINCT可以指定BY(colo -list)子句,其中colo -list可以是单个字段,也可以是用逗号分隔的字段列表。expression - 任何有效的表达式。
通常是包含要求和的数据值的列的名称。%FOREACH(col-list) - 可选-列名或以逗号分隔的列名列表。%AFTERHAVING - 可选-应用在HAVING子句中的条件。SUM返回与expression相同的数据类型,但有如下异常:TINYINT、SMALLINT和INTEGER返回的数据类型都是INTEGER。
注意:SUM可以指定为聚合函数,也可以指定为窗口函数。
本参考页面描述了SUM作为聚合函数的使用。
SUM作为一个窗口函数在窗口函数概述中描述。
SUM聚合函数返回表达式值的和。
通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。
对于那些在某种程度上需要测试ECP的水平可扩展性(计算能力和/或用户和进程的并发性),但又懒得建立环境、配置服务器节点等的人来说,我刚刚在Open Exchange上发布了OPNEx-ECP部署的应用/示例。
返回数据集的统计标准差的聚合函数。
STDDEV([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
STDDEV_SAMP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
STDDEV_POP([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
ALL - 可选-指定标准偏差函数返回表达式的所有值的标准偏差。如果未指定关键字,则这是默认值。DISTINCT - 可选-指定标准偏差函数返回不同(唯一)表达式值的标准偏差的DISTINCT子句。DISTINCT可以指定BY(COL-LIST)子句,其中COL-LIST可以是单个字段,也可以是逗号分隔的字段列表。expression - 任何有效的表达式。通常是包含要分析标准偏差的数据值的列的名称。%FOREACH(col-list) - 可选-列名或逗号分隔的列名列表。可以使用内嵌REST API用描述文件生成REST服务
请求消息如下:
POST: http://[YourServer]/api/mgmnt/v2/INTEROP/cmAPI
Body: API 描述文件,例如下面的Json文件
Basic Authorization Username: 用户名
Basic Authorization Password: 密码
Content-Type Header: application/json
** 注意**:调用接口前,需要创建相应命名空间,本示例为INTEROP
API 描述文件:
{
"swagger": "2.0",
"info": {
"description": "An API for coffee sales using InterSystems IRIS",
"version": "1.0.0",
"title": "Coffee Maker API",
"license": {
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.[toc]
返回指定列中的最小数据值的聚合函数。
MIN([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
ALL - 可选-将聚合函数应用于所有值。ALL对MIN返回的值没有影响。提供它是为了与SQL-92兼容。DISTINCT - 可选-指定考虑每个唯一值。DISTINCT对MIN返回的值没有影响。它是为SQL-92兼容性提供的。expression - 任何有效的表达式。通常是包含要从中返回最小值的值的列的名称。%FOREACH(col-list) - 可选-列名或逗号分隔的列名列表。%AFTERHAVING - 可选-应用HAVING子句中的条件。MIN返回与表达式相同的数据类型。
MIN聚合函数返回表达式的最小值(最小值)。通常,表达式是查询返回的多行中的字段名称(或包含一个或多个字段名称的表达式)。
MIN可以在引用表或视图的SELECT查询或子查询中使用。MIN可以出现在选择列表或HAVING子句中,与普通字段值一起出现。
MIN不能在WHERE子句中使用。除非SELECT是子查询,否则不能在联接的ON子句中使用MIN。
与大多数其他聚合函数一样,min不能应用于流字段。尝试这样做会生成SQLCODE-37错误。
表示当前的本地日期和时间,是由两个整数值组成的字符串,这些整数是计数器,是InterSystems IRIS存储格式,不是用户可读的日期和时间。
ddddd,sssss代码示例:
w $H,!
北京时间2021年12月29日15:15:30时,输出结果为:
66107,54930第一个整数,ddddd,是当前日期,表示为自1840年12月31日以来的天数,其中第1天是1841年1月1日。这个日期到达的最大年年限是9999年12月31日,所以这个整数的最大值是2980013。$HOROLOG不能直接用于表示1840年到9999年范围之外的日期
第二个整数,sssss,是当前的时间,表示为从当天午夜开始的秒数计数。系统将时间字段从0递增到86399秒。当午夜时分达到86399时,系统将时间字段重置为0,并将日期字段增加1。
你可以通过调用Horolog()方法获得相同的当前日期和时间信息,如下所示。
WRITE $SYSTEM.SYS.Horolog()$NOW()返回当前进程的本地日期和时间,是InterSystems IRIS存储格式,不是用户可读的日期和时间。
ddddd,sssss.ffffff代码示例:
w $NOW(),!
北京时间2021年12月29日15:15:30时,输出结果为:
66107,54930.| 值 | 描述 |
|---|---|
| 1 | MM/DD/[YY]YY : 07/01/97 或 02/22/2018 |
| 2 | DD Mmm [YY]YY : 01 Jul 97 |
| 3 | YYYY-MM-DD :2018-02-22 (ODBC时间格式:默认值在下面的tformat部分有描述) 默认情况下,这种格式与当前的地区设置无关 如果要使用你当前的日期和时间的地区设置与这种格式,请将localeopt设置为0。 |
| 4 | DD/MM/[YY]YY :01/07/97 或 22/02/2018 |
| 5 | Mmm [D]D, YYYY :Jul 1, 1997 |
| 6 | Mmm [D]D YYYY :Jul 1 1997 |
| 7 | Mmm DD [YY]YY :Jul 01 1997 |
| 8 | YYYYMMDD :19970701 |
| 9 | Mmmmm [D]D, YYYY :July 1, 1997 |
| 10 | W (2) :一个星期的日数,从0(星期日)到6(星期六)编号。 |
返回指定列中最大数据值的聚合函数。
MAX([ALL | DISTINCT [BY(col-list)]] expression [%FOREACH(col-list)] [%AFTERHAVING])
ALL - 可选-将聚合函数应用于所有值。
ALL对MAX返回的值没有影响。
它提供了SQL-92兼容性。DISTINCT - 可选-一个DISTINCT子句,指定考虑每个惟一值。
DISTINCT对MAX返回的值没有影响。
它提供了SQL-92兼容性。expression - 任何有效的表达式。
通常是包含要返回的最大值的值的列的名称。%FOREACH(col-list) - 可选-列名或以逗号分隔的列名列表。%AFTERHAVING - 可选-应用在HAVING子句中的条件。MAX返回与表达式相同的数据类型。
MAX聚合函数返回表达式的最大值。
通常,表达式是查询返回的多行中字段的名称(或包含一个或多个字段名称的表达式)。
MAX可以在引用表或视图的SELECT查询或子查询中使用。
MAX可以在SELECT列表或HAVING子句中与普通字段值一起出现。
MAX不能在WHERE子句中使用。
MAX不能在JOIN的ON子句中使用,除非SELECT是子查询。
与大多数其他聚合函数一样,MAX不能应用于流字段。
创建逗号分隔值列表的聚合函数。
LIST([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])
ALL - 可选-指定LIST返回string-expr的所有值的列表。
如果没有指定关键字,这是默认值。DISTINCT - 可选-一个DISTINCT子句,指定LIST返回一个仅包含唯一的string-expr值的列表。
DISTINCT可以指定BY(colo -list)子句,其中colo -list可以是单个字段,也可以是用逗号分隔的字段列表。string-expr - 计算结果为字符串的SQL表达式。
通常是所选表中列的名称。%FOREACH(col-list) - 可选-列名或以逗号分隔的列名列表。%AFTERHAVING - 可选-应用在HAVING子句中的条件。LIST聚合函数返回指定列中以逗号分隔的值列表。
一个简单的LIST(或LIST ALL)返回一个字符串,其中包含一个逗号分隔的列表,该列表由所选行中string-expr的所有值组成。
其中string-expr为空字符串(")的行由逗号分隔列表中的占位符逗号表示。
string-expr为NULL的行不包含在逗号分隔的列表中。
首先,什么是数据匿名化?
根据维基百科 Wikipedia:
数据匿名化 是一类以隐私保护为目的的 信息清洁 . 是从数据集中去除可确定个人的信息 , 使得该数据描述的个人保持匿名.
换句话讲, 数据匿名化是保留数据但同时要确保数据源的匿名. 基于所采用的匿名技术,数据被编辑、屏蔽或替换。 这就是IRIS-Disguise的目的,提供一套匿名化工具。 您可以使用两种不同的方式,通过方法执行或在持久类定义本身内部指定匿名化策略。
当前版本的IRIS-Disguise提供了6种匿名化数据的策略
让我解释每种策略,我将用一个例子展示一个方法执行,正如前面提到的,我还将展示如何在持久类定义中应用。
要以这种方式使用IRIS-Disguise,您需要“戴上伪装眼镜”。
在持久类中,可以扩展dc.Disguise.Glasses 类,并根据您选择的策略更改数据类型的任何属性。
之后,在任何时候,只需调用类上的congoverProcess方法。将使用数据类型的策略替换所有值。
让我们开始吧。
###销毁 Destruction
此策略将用一个单词(默认为“机密”)替换整个列。
Do ##class(dc.Disguise.Strategy).创建JSON格式值数组的聚合函数。
注:IRIS可用,IRIS之前版本不可用。
JSON_ARRAYAGG([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])
ALL - 可选-指定JSON_ARRAYAGG返回一个JSON数组,其中包含string-expr的所有值。
如果没有指定关键字,这是默认值。DISTINCT - 可选-一个DISTINCT子句,指定JSON_ARRAYAGG返回一个仅包含唯一字符串expr值的JSON数组。
DISTINCT可以指定BY(colo -list)子句,其中colo -list可以是单个字段,也可以是用逗号分隔的字段列表。string-expr - 计算结果为字符串的SQL表达式。
通常是所选表中列的名称。%FOREACH(col-list) - 可选-列名或以逗号分隔的列名列表。%AFTERHAVING - 可选-应用在HAVING子句中的条件。JSON_ARRAYAGG聚合函数返回指定列中值的JSON格式数组。
一个简单的JSON_ARRAYAGG(或JSON_ARRAYAGG ALL)返回一个JSON数组,其中包含所选行中string-expr的所有值。
创建值列表的聚合函数。
%DLIST([ALL | DISTINCT [BY(col-list)]] string-expr [%FOREACH(col-list)] [%AFTERHAVING])
ALL - 可选-指定%DLIST返回string-expr的所有值的列表。如果未指定关键字,则这是默认值。DISTINCT - 可选- DISTINCT子句,指定%DLIST返回一个结构化的%List,其中只包含唯一的string-expr值。
DISTINCT可以指定BY(colo -list)子句,其中colo -list可以是单个字段,也可以是用逗号分隔的字段列表。string-expr - 计算结果为字符串的SQL表达式。
通常是所选表中列的名称。%FOREACH(col-list) - 可选-列名或以逗号分隔的列名列表。%AFTERHAVING - 可选-应用在HAVING子句中的条件。%DLIST聚合函数返回一个ObjectScript %List结构,其中包含指定列中的值作为列表元素。
一个简单的%DLIST(或%DLIST ALL)返回列表,该列表由所选行中string-expr的所有非null值组成。
string-expr为NULL的行不会作为元素包含在列表结构中。
要使用COUNT(*),必须对指定的表具有表级别的SELECT权限。
要使用COUNT(column-name),必须对指定的列具有列级的SELECT权限,或者对指定的表具有表级的SELECT权限。
可以通过调用%CHECKPRIV命令来确定当前用户是否具有SELECT权限。
可以通过调用$SYSTEM.SQL.Security.CheckPrivilege()方法来确定指定的用户是否具有表级SELECT权限。
为了获得最优的COUNT性能,你应该按照以下方式定义索引:
COUNT(*),如果需要,定义位图扩展索引。
这个索引可能是在创建表时自动定义的。COUNT(fieldname),为指定字段定义一个位片索引。
查询计划优化COUNT(fieldname)自动应用默认的排序规则到fieldname。与所有聚合函数一样,COUNT总是返回数据的当前状态,包括未提交的更改,而不管当前事务的隔离级别如何,如下所示:
COUNT插入和更新的记录的计数,即使这些更改尚未提交并可能回滚。COUNT不计算已删除的记录,即使这些删除还没有提交并且可以回滚。下面的示例返回Sample.Person中的总行数:
SELECT COUNT(*) AS TotalPersons
FROM Sample.