Sql InterSystems Caché:如何计算表中列表中的值的遭遇?

Sql InterSystems Caché:如何计算表中列表中的值的遭遇?,sql,collections,count,intersystems-cache,Sql,Collections,Count,Intersystems Cache,我对Caché很陌生,被要求计算表中列表中值的遭遇次数。例如,表如下所示: id | values ------------------- 1 | {1, 2} 2 | {1, 3, 4, 4, 5} 3 | {1, 2, 5} 4 | {1, 2, 2, 4, 5} 5 | {2, 1, 4} value | count -------------- 1 | 5 2 | 5 3 | 1 4 | 4 5 | 3 类定义 C

我对Caché很陌生,被要求计算表中列表中值的遭遇次数。例如,表如下所示:

id | values
-------------------
1  | {1, 2}
2  | {1, 3, 4, 4, 5}
3  | {1, 2, 5}
4  | {1, 2, 2, 4, 5}
5  | {2, 1, 4}
value | count
--------------
 1    |   5
 2    |   5
 3    |   1
 4    |   4
 5    |   3
类定义

Class Object.Test Extends %Persistent
{
  Property values As list of %Integer
}
该表的输出必须如下所示:

id | values
-------------------
1  | {1, 2}
2  | {1, 3, 4, 4, 5}
3  | {1, 2, 5}
4  | {1, 2, 2, 4, 5}
5  | {2, 1, 4}
value | count
--------------
 1    |   5
 2    |   5
 3    |   1
 4    |   4
 5    |   3
但我不知道怎么做


如果没有需要保存的数据,请编辑添加的类定义

将属性列为单独的表

类对象。测试扩展%Persistent { 属性值为%IntegerSTORAGEDEFAULT=array,SQLPROJECTION=table/column的列表; }

删除数据、存储定义并重新编译类

生成数据

执行SQL查询

挑选 值,count*作为count 从Object.Test_值 按值分组

可选的添加和生成索引

注释

这就是SQL方式。您也可以这样做:

对象在对象及其属性上的迭代方式 全局方式迭代全局和此属性值
.

假设您没有需要保存的数据

将属性列为单独的表

类对象。测试扩展%Persistent { 属性值为%IntegerSTORAGEDEFAULT=array,SQLPROJECTION=table/column的列表; }

删除数据、存储定义并重新编译类

生成数据

执行SQL查询

挑选 值,count*作为count 从Object.Test_值 按值分组

可选的添加和生成索引

注释

这就是SQL方式。您也可以这样做:

对象在对象及其属性上的迭代方式 全局方式迭代全局和此属性值
.

欢迎来到StackOverflow。请熟悉一下。没有人会为你做你的工作。显示一些代码,它显示了您到目前为止尝试的内容。@Konafets,如果我有东西要显示,我会显示,但我只能在列中没有集合时显示简单的计数。我基本上只知道如何在Caché中使用对象,所以这就是为什么我要问-我没有任何想法如何做到这一点如果你想为这个表添加类定义,它可能比这个抽象表更有用。欢迎使用StackOverflow。请熟悉一下。没有人会为你做你的工作。显示一些代码,它显示了您到目前为止尝试的内容。@Konafets,如果我有东西要显示,我会显示,但我只能在列中没有集合时显示简单的计数。我基本上只知道如何在Caché中使用对象,所以这就是为什么我要问-我没有任何想法如何做到这一点如果你想为这个表添加类定义,它可能比这个抽象表更有用。工作起来很有魅力!谢谢你做了这么多的工作!非常感谢你