问题标签 [aggregates]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2620 浏览

oop - 为什么存储库仅用于领域驱动设计中的聚合?

在 DDD 中,存储库用于执行聚合的序列化和反序列化,例如通过读取和写入数据库。这样,聚合可以包含更纯粹的业务逻辑,并且不会耦合到非特定领域的持久性策略。

但是,我想知道为什么存储库总是被描述为专门用于聚合。将它用于所有实体不是同样有动力吗?

(如果这只是一个事实,即所有普通实体都可以被视为具有零个孩子的聚合根,请通知我,这个问题可以被埋没。)

0 投票
0 回答
27 浏览

amazon-redshift - 如何计算 postgresql 中版本类型字段的最大值?

我有一张这样的桌子:

现在,我想获得最新版本。默认情况下,order by 不起作用,因为 1.8.11 被视为最高。

我知道一种方法是使用 split_part 和 substring 并获取最新版本,在这种情况下将是 1.30.89。

只是想了解是否有更好的方法来实现这一目标。

编辑1:

我正在使用 redshift postgresql。所以,并不是所有的 postgresql 函数都可用。

我想出的另一种方法是这样的。在这里,我将零填充到左侧,然后在报告实际版本之前必须删除它们。

EDIT2: 我有一个更好的方法。所以,在这里分享一下:

谢谢!

0 投票
2 回答
432 浏览

sql-server - 基于组条件的 T-SQL 条件最大值或总和

我无法弄清楚这一点,我想找出最有效的方法。我有这张表(显示部分记录):

从该表中,我需要得出这个结果集:

这是逻辑:

对于每个前缀

  • 如果有多个但相同的CmmtNumber记录,请选择具有 MAX( CmmtAmount )的记录
  • 如果有多个但不同 的CmmtNumber记录,则显示所有这些记录的 SUM( CmmtAmount )。

我一直在查看 OVER/PARTITION 但无法提出正确的查询。请帮忙!谢谢。

0 投票
4 回答
64 浏览

sql-server - SQL:从视图中的聚合函数选择的行中获取列

我有三个 SQL 表:(Release代表电影的发行),Media(代表这些发行版中的各个可录制媒体;即对于蓝光/DVD 组合,将有两行Media,一个蓝光和一张 DVD,指向Release) 和MediaType(定义蓝光、DVD、VHS 等) 中的同一行。Release/MediaMediaType/存在一对多的关系,Media并且Media处于两种关系的“多”方。我有一个 , 的视图ReleasevRelease其中包含聚合函数,例如COUNT显示与该版本相关联的媒体数量。到目前为止,这就是我对这个观点的看法:

您会注意到我还包含了另外两个聚合列:FirstMediaID获取与该版本相关联的媒体 ID,该版本首先出现在Media表中(即,如果一个版本有两个与之关联的 DVD,它会获取一个 ID 较低的价值)。该列本身没有用;然后,我想做的是获得MediaType与之Media相关的内容。换句话说,我想要一列显示MediaType附加Media到每个Release. 之后的列 ,FirstMediaType应该这样做,但它反而获得MediaTypeMediaRelease并选择按字母顺序排在第一位的那个——这意味着蓝光将始终优先于 DVD(这很好),但音频 CD 将始终优先于其他所有内容(这不好)。

如何获取FirstMediaType此视图中的列以获取MediaType标识的媒体FirstMediaID

更新:这里是表格、它们的列和一些示例行。

一对来自Release

Compilation表示其中包含多部电影的版本。

中的相应条目Media

前几个MediaType

对应的条目vRelease应该是这样的:

但实际上是这样的:

最后一个才是问题所在。

0 投票
1 回答
49 浏览

sql - 在当前购买时添加客户过去购买总额的列并查找来自回头客的购买率 - SQL

我正在使用包含商店购买历史记录的表格。有一个购买 ID、一个日期列和一个客户 ID。我正在尝试(到目前为止没有多大成功)做两件事:

添加一列,为每次购买说明客户在此之前(上个月)进行了多少次购买。我开始加入自己的桌子,但还没有走得更远。我知道我需要以某种方式过滤日期,以便仅计算此日期之前的购买,并且不超过一个月前。关于解决这个问题的简单方法有什么建议吗?

我想看到的第二件事是每周回头客交易率是多少。也就是说,最近(上个月)购买的人的购买比例是多少。理想情况下,我将能够从我的 sql 查询中绘制这个图表,我希望得到一个日期、每周总计(截至日期的 7 天)和每周费率。我一直在阅读滚动窗户,老实说,我很难理解它。不幸的是,我的 SQL 级别仍然很低。任何有关相对简单的方法的提示将不胜感激。谢谢

0 投票
3 回答
6949 浏览

mysql - 基于列值的条件连接

我已经看了一遍,不幸的是,我似乎无法弄清楚我做错了什么。我正在开发一个使用 MySQL 服务器的个人财务管理应用程序。对于这个问题,我正在使用 4 个表。

TRANSACTIONS表包含列CATID,这些列引用和表BILLID中的主键。和表都有一个引用表中主键的列。SECONDARYCATEGORIESBILLSTRANSACTIONSBILLSPCATIDPRIMARYCATEGORIES

我正在构建一个 SQL 查询,该查询对表中的“金额”列求和,并从与该值关联的所有记录中TRANSACTIONS返回主键和总和。PCATID如果BILLID设置为-1,它应该PCATIDSECONDARYCATEGORIESwhere 中找到SECONDARYCATEGORIES.ID = TRANSACTIONS.CATID,否则(因为-1表明这不是账单),它应该PCATID从匹配的BILL记录中找到。BILLS.IDTRANSACTIONS.BILLID

我正在寻找这样的东西(显然不是有效的 SQL):

我尝试了无数不同的 JOIN、IF 语句等,但我似乎无法完成这项工作。我曾想过根据 的值将其分解为不同的 SQL 查询BILLID,并对这些值求和,但如果可能的话,我真的很想在一个 SQL 查询中完成这一切。

我知道我在这里遗漏了一些明显的东西;很感谢任何形式的帮助。

编辑:我忘了描述 BILLS 表。它包含一个主要类别、ID 以及一些描述性数据。

0 投票
1 回答
89 浏览

domain-driven-design - 在一对一相关的域聚合之间使用共享 ID

将共享 GUID 用作具有一对一关系的根聚合的聚合 ID 是否合理?

除了清晰之外,我没有立即看到任何理由。

例如,我有一个组织成员有界上下文,其核心关注聚合根是成员。会员聚合包含会员相关数据,以及对相关个人聚合(包含姓名、出生日期等)和网站用户(EF 身份)聚合的引用。

我最初的想法是做这样的事情,其中​​每个聚合根包含对相关聚合根的引用:

获取会员的人是通过以下方式完成的:

然后我想到,如果我只是在成员、个人和用户名中使用相同的 ID,我可以“简化”事情,然后使用例如检索相关聚合:

这只是一个很小的区别,我最初对这个想法很满意,但现在变得谨慎起来。这是一个坏主意,因为它掩盖了关系?

0 投票
1 回答
47 浏览

reporting-services - SSRS 计算组的线性趋势

假设我有一个具有如下值的数据集:

我需要计算每一列的线性趋势。这意味着我需要在组摘要中比较每个值是否依次大于或小于上个月的值。

我需要展示三个结果:

  • 趋势是↑(每个数字都大于或等于之前的所有月份。)
  • 趋势是↓(每个数字都小于或等于所有前几个月。)
  • 趋势是 ↔ (所有其他情况。)

使用示例数据集,A 列将是 ↑,D 列将是 ↓,所有其他列将是 ↔。我需要能够在每个列的组摘要中跟踪这一点。

我尝试使用 RunningValue 函数以基本形式跟踪这一点,以使用自定义代码将“+”、“-”或“=”填充到连接字符串中。我遇到这个问题的地方是我试图为多个列轮询这些结果,它试图将每个计算连接到一个字符串。

0 投票
1 回答
120 浏览

sqlite - 如何从文本框=带有聚合的公式的表中选择(Xojo + SQLite)

我有一个带列的表;

  • 全名,
  • 组号,
  • 日期,
  • 日程,
  • 克拉蒙,
  • 德拉蒙,
  • 金额。

我想选择那些 textbox111.text 大于 formula 的列SUM(Cramount)*26/(SUM(Dramount+Iamount))

下面的 SQL 给了我语法错误,有人可以帮助我吗 DATABASE IS SQLITE AND PROGRAMMING IN XOJO。

0 投票
1 回答
2775 浏览

c# - 具有值对象的实体框架核心

通过将聚合和值对象与 EF7 结合使用,我遇到了问题。

这是汇总:

这是值对象:

所以 MasterAgreement 包含 2 个公共 MasterAgreementRaise 字段

生成数据库的实体配置就是这样完成的,生成的数据库正确地符合 DDD 原则:

尝试从数据库中更新或删除主协议时,EF7 无法处理此问题

更新期间的错误是:无法跟踪实体类型“MasterAgreement.RegularRaise#MasterAgreementRaise”的实例,因为已经在跟踪具有相同键值 {'MasterAgreementKey'} 的另一个实例。替换拥有实体时,修改属性而不更改实例或首先分离先前拥有的实体条目。

并且在删除过程中:“MasterAgreement”的实体与 MasterAgreement.RegularRaise#MasterAgreementRaise 共享表“MasterAgreement”,但没有具有相同键值的此类实体已标记为“已删除”

如何在不丢失值对象并通过添加标识符将其更改为实体的情况下解决此问题?

所有帮助将不胜感激