问题标签 [group-by]

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 投票
3 回答
120 浏览

mysql - 按“其他”分组,其中贡献较小的组包含在“其他”字段中 - MySQL

我想 GROUP BY 我表中的一个项目,它具有相关的货币价值。我可以将其计算为百分比,但是列表中的项目通常太多(太多而无用,例如在图表中)。因此,我想将那些对总数的贡献小于 5% 的项目放入“其他”组。有什么想法吗?

谢谢(使用 MySQL > v5)

0 投票
6 回答
4103 浏览

sql - 对相关记录进行分组,但仅从第一条记录中选择某些字段

我正在对多个记录执行聚合函数,这些记录按公共 ID 分组。问题是,我还想导出一些其他字段,这些字段在分组记录中可能不同,但我想从其中一个记录中获取这些特定字段(第一个,根据查询的 ORDER BY)。

起点示例:

我需要查询推荐代码,但在聚合函数之外执行此操作意味着我也必须按该字段进行分组,这不是我想要的 - 在此示例中,我需要每个客户恰好一行。我真的只关心第一个订单的推荐代码,我很乐意丢弃任何以后的推荐代码。

这是在 PostgreSQL 中,但可能来自其他数据库的语法可能足够相似以工作。

被拒绝的解决方案:

  • 不能使用 max() 或 min() 因为顺序很重要。
  • 子查询一开始可能会起作用,但不能扩展;这是一个极其简化的例子。我的实际查询有几十个字段,比如我只想要第一个实例的参考代码,以及几十个 WHERE 子句,如果在子查询中重复,将成为维护的噩梦。
0 投票
4 回答
7185 浏览

c# - 使用 GROUP BY 功能在 ADO.NET 中聚合函数

这是一个更直接的问题,源于我之前提出的一个更普遍的问题,现在我花了更多时间研究 ADO.NET

我想使用 ADO.NET DataTable 并在某些列上使用聚合函数(例如 SUM)执行 SQL SELECT 查询,并为其余列设置 GROUP BY。然后我想获取结果并将其显示在 DataGrid 中。

我知道我可以创建包含过滤条件和聚合函数的 DataTable 的 DataView。但是表达式上的 MSDN 页面

“如果您使用单个表来创建聚合,则不会有分组功能。相反,所有行都会在列中显示相同的值。”

如何在不将我的表写入单独的数据库并在那里运行查询的情况下从 ADO.NET 中获取 GROUP BY 类型功能?有没有办法通过创建或使用第二个表来做到这一点?

0 投票
14 回答
685693 浏览

c# - 按多列分组

如何在 LINQ 中对多列进行 GroupBy

SQL中类似的东西:

如何将其转换为 LINQ:

0 投票
2 回答
1949 浏览

sql - 返回部分不同/唯一的行

我需要创建一个查询,该查询按两列分组并根据条件返回一个附加列。

例如,假设我有以下列:

产品代码 | 序列号 | 数量 | 购买日期 | 客户ID

该表包含具有不同数量和购买日期的 ProductCode 和 SerialNumber 的重复组合。我想为 DatePurchased 返回具有最大(最近)值的行的 ProductCode、SerialNumber 和 Quantity。为了使事情更加复杂,必须对 CustomerID = 'xxx' 的所有行执行此操作。

有任何想法吗???

任何帮助表示赞赏。干杯。

0 投票
3 回答
16971 浏览

c# - 如何使用 Linq 对每 N 行进行分组

我找不到一种方法来完成这项工作,并希望有人有一个想法。一个简化的例子是有一个整数 1-100 的列表,我想每 3 行分组一次,所以结果将是第一组中的 1,2,3,然后是下一组中的 4,5,6,等等。我知道如何获取每第 n 条记录,但我需要的是所有记录,因此我可以使用 first、last、sum、max 等来聚合它们。

谢谢!

0 投票
2 回答
5302 浏览

c# - linq 按日期时间列上的开始时间到结束时间分组

好的,这是一个混乱的查询,我只取得了有限的成功。我有一个包含 datetime 属性和其他数据的 Foo 类的列表。我几乎每分钟都有一堂课/一排,有些缺课,有些缺课,比如假期或周末。我的目标是每天对从开始时间到结束时间的所有行进行分组。

所以在某些日子里,我的开始时间可能是上午 9:30,结束时间可能是下午 3:00。这种情况我通过以下方式处理:

这工作正常。我的问题是有时我的开始时间是晚上 9 点,结束时间是早上 6 点。在那种情况下,我希望这组 foos 过夜,如果晚上 9 点是星期五,并且直到下一个星期一之前没有行,我希望该组跨越周末。我什至会很高兴提出一个查询的建议,该查询总是会转到第二天。

我希望那很清楚并欣赏任何想法。我尝试了很多其他方法来使用循环并创建另一个不同日期的列表等,但对此并不满意。

0 投票
4 回答
255 浏览

sql - 选择对行进行分组

我有一张这样的桌子:

现在我想选择所有行和要分组的“c”替代项。

0 投票
1 回答
18941 浏览

linq - 将 LINQ 应用于对象分组依据和排序依据到通用列表(C#)

我很难针对通用列表 myList 创建工作组依据和排序依据子句。myList 有一个属性“设置”列表,它本身包含每个业务的“子”属性列表。

我想按行业分组,并在每个行业内按企业名称排序。我的意图是这样的:

但是我收到错误消息:' System.Linq.IGrouping 不包含设置的定义,并且没有扩展方法设置接受 System.Linq.Igrouping 类型的第一个参数可以找到.... '表明我无法调用订单by 子句没有一些转换或额外的处理。

我已经尝试了各种各样的方法来分解它并让它工作,但我错过了一些东西。任何帮助表示赞赏

0 投票
4 回答
3485 浏览

sql - MySQL - 仅在每个分组值的第一个实例中显示字段值?

我认为这是不可能的,但我希望得到证明。

我写了一个简单的报表查看类来输出各种数据库查询的结果。为了改进显示,当我有一个包含分组数据的报告时,我想仅在每个唯一值的第一行显示字段值 - 我想在查询级别执行此操作,或者它会在我的课堂上需要额外的逻辑来确定这些特殊值。

用一个简单的例子来说明我的要求可能会有所帮助。想象一下这个数据集:

如果可能,我希望数据集返回为:

有没有办法在 MySQL 中以编程方式执行此操作?