问题标签 [aggregate-functions]

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 投票
1 回答
624 浏览

sql - SQL Server Group By 计算得分出现的次数

这可能有点难以解释,但我的 SQL Server 数据库中有两列我已经简化了......

项目
ID
itemName
voteCount
分数

投票
itemID
得分

所以,基本上我存储了放在一个表中的每张选票,而且还计算了项目表中每个项目的投票数以及它的平均分数(满分 10 分)(我知道这是重复数据,但它让事情变得更容易)。

无论如何,我想创建一个 SQL 查询来查找得分最低的 2 个项目。你会认为这很容易,因为你只是这样做......

但是,客户端添加了以下复杂性。

当 2 个或更多项目得分相同时,10/10 票数最高的项目将被放置在上面。如果 2 个或更多项目具有相同的分数和相同的 10/10 票数,那么它将把获得最多 9/10 票的项目排在其他项目之上,依此类推,如果一切都正确,则一直到 0/10 票数否则是相等的。

所以,挑战是根据这些标准对所有项目进行排名,然后选择倒数 2。我已经尝试了分组、聚合和“子查询”的每一种组合来解决这个问题,但我认为我需要更聪明的人的帮助比我(如何,如何。

任何帮助将不胜感激。

澄清

一个项目的平均分数存储在项目表中,针对每个投票的分数保存在投票表中。最初,我们需要按平均分数(I.score)进行排名,如果 2 个项目具有相同的分数,我们需要开始计算与该项目相关的投票中 10/10 的数量(v.score)。

因此,我们可能有一个名为“t-shirt”的项目,其平均得分为 5/10。这来自 6 票,以下分数为 5,5,5,5,5,5。

下一个项目叫做“法拉利”,平均分也是5/10,但是这个项目只有4票,下面的分数是6,5,5,4

显然,法拉利应该赢,因为 sql 会看到它没有 10、没有 9、没有 8、没有 7,但它确实有 6 票,这比 T 恤要好。

0 投票
3 回答
30973 浏览

sql-server - SQL Server——为每个不同的行连接表和 SUM 列

有人可以仔细检查我的 SQL 语句是否正确操作和一般常识方法吗?

这是发生了什么:我有一个具有一对多关系的父表和子表,连接到一个名为 AccountNumberKey 的列上。子表中有数字列,我需要总结一下。

数据使得具有给定 AccountNumberKey 值的所有子记录在它们的两个数字列中始终具有相同的值。我想加入这些表,并为每个 AccountNumberKey 将这两列的总和放入一个临时表中。我只需要对给定每个 AccountNumberKey 的单个子记录中的列求和。

下面的一些示例数据将(我希望)使这一点更清楚:

这是我的 SQL 语句:

目标是链接表并将数据放入临时表中,如下所示:

我的 SQL 查询是否通过了集合?在分组方面,我不是天才,我想知道这是否是 A) 正确和 B) 一个好的方法,或者是否有更好的连接可以尝试。

谢谢!

0 投票
4 回答
377 浏览

database - 试图设计一个应该对另一个表中的值求和的列

对不起,如果标题不是很清楚。我现在将尝试解释:

我有两个表:表 A 和表 B。它们之间的关系是一个(对于 A 表)到多个(对于 B 表)。所以,这有点像主从情况。我在表 B 中有一个明显是十进制的“金额”列,在表 A 中有一个“总金额”列。我正在尝试弄清楚如何使表 A 中的值保持最新。我的建议是基于表 A 制作一个视图,并使用聚合查询计算表 B 中的金额。当然使用适当的索引...但是,我的队友建议每次我们更改表 A 中的某些内容时更新表 A 中的值我们的应用程序中的表 B。我想知道,这里最好的解决方案是什么?可能是第三种变体?

一些澄清......我们希望这些表成为我们数据库中增长最快的表。并且表 B 的增长速度将比表 A 快得多。表 B 中最频繁的操作将是插入……而几乎没有其他操作。表 A 中最频繁的操作将是 select ... 但不仅如此。

0 投票
2 回答
125 浏览

linq-to-sql - 将此带有计数和分组的 SQL 转换为 linq2SQL

有人可以为我将此查询转换为 linq2sql 吗?试图自学 linq 看看我是否想将它用于一个小项目,并被挂在最小的细节上......

0 投票
1 回答
1392 浏览

c# - 这个按小时平均和分组的 LINQ 查询是否有效编写?

这是我的第一个真实世界的 LINQ-to-SQL 查询。我想知道我是否犯了任何大而明显的错误。

我有一个包含数据、dataTypeID、machineID 和 dateStamp 的中型(2M+ 记录,每天添加 13k)表。我想在 4 小时内从所有机器和特定数据类型中获取数据的平均值、最小值和最大值,回溯 28 天。

例如

DateTime Avg Min Max
1/1/10 12:00AM 74.2 72.1 75.7
1/1/10 04:00AM 74.5 73.1 76.2
1/1/10 08:00AM 73.7 71.5 74.2
1/1/10 12:00PM 73.2 71.2 76.1
等.
2010 年 1 月 28 日上午 12:00 73.1 71.3 75.5

到目前为止,我只能按 1 小时的增量对平均值进行分组,但如果替代方案过于混乱,我可能会处理这个问题。

代码:

0 投票
3 回答
737 浏览

c# - 如何在 LINQ to DataSet 的匿名类中使用基于查询数据的条件?

我可以通过循环简化查询的结果来做到这一点:

但是,我想知道在 LINQ 语句中是否有可能。

具有两个成员的匿名类:名称和值。名称是“X”或“Y”,具体取决于字段 1,值是满足条件的记录的所有字段 2 值的总和。我想我需要使用 Count() 方法,但我不确定如何或在哪里。也许我需要使用“group”和“into”从临时表中获取计数?

如果有 (field1 == "value1") 的记录,则字符串将为“X”,否则字符串将为“Y”。

提前致谢!

0 投票
2 回答
2971 浏览

sql - 如何呈现聚合函数的特征(NULL)?

当涉及 NULL 值时,我正在寻找数据库的“教科书”示例来说明聚合函数(Max、Min、Sum、Avg 和 Count)的显着特征。

我必须能够使用提到的数据库,通过示例查询及其答案来讨论和说明/展示这些聚合函数在存在 NULL 的情况下的用法。

非常感谢!

0 投票
1 回答
342 浏览

sql - 半复杂聚合选择语句混淆

好吧,这个问题有点复杂,请多多包涵。

我有一个充满数据的表。表列之一是 EntryDate。每天可以有多个条目。但是,我想选择所有在其各自日期的最新条目的行,并且我想选择所述表的所有列。

其中一列是唯一标识符列,但它不是主键(我不知道它为什么存在;这是一个非常古老的系统)。出于演示的目的,假设该表如下所示:

主键在 PersonID 和 StoreID 上,这在逻辑上定义了唯一性。

现在,就像我说的那样,我想选择所有在特定日期最新条目的行(对于每个 Person-Store 组合)。这很容易:

其中 dbo.dayof() 是一个简单的函数,它从日期时间中剥离时间分量。但是,这样做会丢失其余的列!我不能简单地包含其他列,因为那样我就必须包含group by它们,这会产生错误的结果(特别是因为 ID 是唯一的)。

我发现了一个肮脏的黑客可以做我想做的事,但必须有更好的方法——这是我目前的解决方案:

这让我得到了正确的数据,#StagingTable但是,看看它!创建一个包含空值的表,然后进行更新以取回这些值——肯定有更好的方法来做到这一点吗?一个语句可以让我第一次获得所有值?

我相信该原始文件select(图 1)上的正确连接会起到作用,例如自连接或其他什么……但是您如何使用该group by子句来做到这一点?我找不到正确的语法来执行查询。

我对 SQL 很陌生,所以我很可能遗漏了一些明显的东西。有什么建议么?

(在 T-SQL 中工作,如果有什么不同的话)

0 投票
13 回答
707250 浏览

sql-server - SQL Server:PARTITION BY 和 GROUP BY 之间的区别

多年来,我一直在使用GROUP BY所有类型的聚合查询。最近,我一直在对一些PARTITION BY用于执行聚合的代码进行逆向工程。在阅读我能找到的所有文档时PARTITION BY,听起来很像GROUP BY,也许添加了一些额外的功能?它们是相同通用功能的两个版本,还是完全不同的东西?

0 投票
1 回答
930 浏览

lookup - SSRS 2008 需要查找最大订单的客户名称

我正在创建一个 SSRS 报告,其中包含按天分组的订单表。现在,我可以使用 SSRS MAX() 函数轻松获取当天的最大订单值并将其放入组标题中。

但是,我还想获取下此订单的相应客户名称,并将其也放在组标题中。

我们可以假设我的结果集只包含日期、名称和订单值。在 SSRS 2008 中有什么方法可以做到这一点吗?

谢谢