如何对最后4行的数据执行聚合函数?
我有一张桌子的示例. public class WeeklyNums { public int FranchiseId { get; set; } public DateTime WeekEnding { get; set; } public decimal Sales { get; set; } } 我需要第四列,该列计算本周和前三周的最低限度.因此,输出看起来像这样. 1 7-Jan $1 1 14-Jan $2 1 21-Jan $3 1 28-Jan $4 **1** 1 4-Feb $4 **2** 1 11-Feb $6 **3** 1 18-Feb $4 **4** 1 25-Feb $8 **4** 1 3-Mar $7 **4** 我不知道从哪里开始.即使在SQL中解决它也有帮助. thx! 解决方案 我知道我为
6 2024-04-25
编程技术问答社区
linq聚集的嵌套计数
我有以下类: class Outer { public ICollection Inners } class Inner { public ICollection Inners } 我想按照其内部和嵌套的内在的总人数来订购降落的列表. 例如: 如果我有2个Outers:第一个有3个内部的集合,每个集合有1个内部的内部,那么总数为5. 例如,第二个可以包含2个内部的集合,每个集合都有3个嵌套内部 总数为2 + 3 + 3 = 8 因此,在返回的结果中,第二个示例应为第一个示例. 有人吗? :) 解决方案 首先,构建一种递归方法来计算Inner对象内的内在对象: public static int Count(Inner inner) { var count = 1; if (inner.Inners != null && inner.Inners.Any()) c
8 2024-04-23
编程技术问答社区
ADO.NET中具有GROUP BY功能的聚合函数
这是一个更直接的问题,源于较早的我较早提出的更一般的问题现在我花了更多时间来研究ado.net 我想采用ado.net dataTable,并在某些列上执行具有汇总函数(例如sum)的SQL SELECT查询的等效词,然后通过设置为其余列进行组.然后,我想获取结果并将其显示在datagrid中. 我了解,我可以创建一个包含过滤条件和汇总功能的数据表的数据范围.但是 "如果您使用单个表来创建一个汇总,则不会有群体功能.相反,所有行都会在列中显示相同的值." 如何从ADO.NET中逐型功能进行组,而不会将我的表格写入单独的数据库并在那里运行查询?有什么方法可以通过创建或使用第二个表来做到这一点? 解决方案 您可以使用LINQ的分组能力来完成此操作.另外,您可以将数据杂志绑定到LINQ查询,但是数据只会读取. Web搜索LINQ分组应该可以带您去哪里. 其他解决方案 这是使用.NET 3.X及以上(LINQ)进行操作的方法: . 这是使用.NET
22 2024-04-23
编程技术问答社区
在Dictionary集合中,如何使用LINQ将TimeSpans加在一起?
是否可以在字典中将所有均等键分组,并使用linq? 这样的东西(但这不起作用) var p = myDictionaryStringTimeStamp.Sum(x => x.Value.Add(myTimeStamp); 解决方案 您可以使用 Aggregate linq方法如下: var totalTime = myDictionaryStringTimeStamp .Values .Aggregate(new TimeSpan(0), (p, v) => p.Add(v));
4 2024-04-21
编程技术问答社区
需要更多关于Enumerable.Aggregate函数的细节
您可以帮助我理解, words.Aggregate((workingSentence, next) => + next + " " + workingSentence); 从下面的代码片段?如果有人解释我在C#1.1中实现这一目标,那将是很棒的. (摘要来自 ms ) - string sentence = "the quick brown fox jumps over the lazy dog"; // Split the string into individual words. string[] words = sentence.Split(' '); // Prepend each word to the beginning of the // new sentence to reverse the word order. string re
10 2024-04-20
编程技术问答社区
使用LINQ的多个SUM
我有以下循环,我可以使用多个总和吗? foreach (var detail in ArticleLedgerEntries.Where(pd => pd.LedgerEntryType == LedgerEntryTypeTypes.Unload && pd.InventoryType == InventoryTypes.Finished)) { weight += detail.GrossWeight; length += detail.Length; items += detail.NrDistaff; } 解决方案 从技术上讲,您拥有的可能是最有效的方法.但是,您可以在iEnumerable上创建一个扩展方法调用每个可能使其更简单: public static class EnumerableExtens
6 2024-04-18
编程技术问答社区
LINQ表达式中的Aggregate Function抛出了错误。(不能被翻译成存储表达式)。
错误: LINQ到实体不识别方法'System.String聚合[String,String](System.Collections.generic.Generic.Enumerable 1[System.String], System.String, System.Func 3 [System.Strote.String,System.Stry.String,System.System.String])'方法,此方法不能翻译成商店表达式. linq表达式: Items = context.TESTANSWER.Where(x => x.ID == 6729223232) .Join(context.QUESTIONREPOs, x => x.QUESTIONID, y => y.ID, (x, y) => new { x = x, y = y }) .Join(context.OPTIONREPOs, p => p
12 2024-04-15
编程技术问答社区
使用Linq to SQL在一个查询中实现多个聚合函数
我正在尝试在LINQ(EF6)中实现以下内容: SELECT count(A), sum(B), average(C) FROM TableA, LEFT JOIN TableB ON ... LEFT JOIN TableC ON ... WHERE (very complicated conditions) C#代码看起来如下: IQueryable = dbSet .Include(e => e.entityB) .Include(e => e.EntityC) .Where( ); 如何在不同字段上应用多个聚合功能?具体而言,从某种意义上说,这不会导致复杂的条件在结果查询中一遍又一遍地复制? 解决方案 您可以使用常数 trick使用组来使所有汇总使用单个SQL查询(和共享复杂的过滤器): var result = dbSet .Wh
4 2024-04-13
编程技术问答社区
LINQ按时间段聚合和分组
我试图了解如何通过时间间隔将LINQ用于分组数据;然后理想地汇总每个组. 找到许多具有显式日期范围的示例,我正在尝试按5分钟,1小时,1天等期间进行分组. 例如,我有一个包裹具有值的日期时间的类: public class Sample { public DateTime timestamp; public double value; } 这些观察值包含在列表集合中的系列中: List series; 因此,要按小时时间进行分组,并平均汇总价值,我正在尝试做类似的事情: var grouped = from s in series group s by new TimeSpan(1, 0, 0) into g select new { timestamp = g.Key, value = g.Average(s => s.value }; 这从根本上是有缺
10 2024-04-11
编程技术问答社区
为什么PostgreSQL数组访问在C语言中比在PL/pgSQL中快得多?
i有一个表格架构,其中包括一个int数组列和一个自定义聚合函数,该函数汇总了数组内容.换句话说,给定以下内容: CREATE TABLE foo (stuff INT[]); INSERT INTO foo VALUES ({ 1, 2, 3 }); INSERT INTO foo VALUES ({ 4, 5, 6 }); 我需要一个返回{ 5, 7, 9 }的" sum"函数.正确工作的PL/PGSQL版本如下: CREATE OR REPLACE FUNCTION array_add(array1 int[], array2 int[]) RETURNS int[] AS $$ DECLARE result int[] := ARRAY[]::integer[]; l int; BEGIN --- --- First check if either input is NULL, and return the other if it is
14 2024-04-06
编程技术问答社区
如果源列中的任何一列为真,则将布尔值累积为真。
说我有下表: id column_a column_b column_c 1 t f t 2 t f f 3 f t f 从上表中,我想: select rows from id = 1,2; 结果应为: column_a column_b column_c t f t 如果已定义的ID之间的任何行对于特定列具有true,我们假设结果为true. 解决方案 使用聚合函数SELECT bool_or(column_a) AS column_a , bool_or(column_b) AS column_b , bool_or(column_c) AS column_c FROM tbl WHERE id IN (1,2); 手册: true如果至
8 2024-04-01
编程技术问答社区
用二进制OR聚合比特字段的值
我有一个带有 int 值的表格用作比特菲尔德(其中每个位是标志). 现在,我想通过二进制操作(在我的情况下)将它们汇总为: : SELECT 1 AS bitfield INTO #TABLE UNION ALL SELECT 1 + 2 + 8 + 32 UNION ALL SELECT 2 + 128 UNION ALL SELECT 2 + 32 SELECT AND_AGGR(bitfield) -- Invalid because AND_AGGR doesn't exist FROM #TABLE DROP #TABLE 将导致值171 希望不需要很多|和MAX的好方法(但是,如果必须,您必须)? 我本人正在使用MS SQL Server 2008,但其他服务器上的解决方案也很感兴趣. 解决方案 如果您期望结果171,那么您的意思是二进制OR不是AND? 无论如何,此解决方案将值汇总到变量中: SELECT 1 AS bi
10 2024-03-31
编程技术问答社区
如何通过COMOSDB中的聚集功能的结果订购查询结果?
我使用cosmos db,我需要用 count 的结果对结果进行排序. 我不想每次(或为其创建服务)对结果进行排序,而是希望将结果直接从COSMOSDB的查询输出中进行排序. 在Azure的Document Explorer中,我在汇总Collection上执行以下请求: SELECT * FROM ( SELECT COUNT(1) AS AlarmCount, a.AlarmType FROM AggregatedEvent a WHERE a.AlarmType != null and a.Prom > 0 GROUP BY a.AlarmType ) AS g ORDER BY g.AlarmCount 它会导致以下错误消息: 标识符" alarmcount"无法解决. 如果我使用另一个属性来订购g.alarmtype,则在文档中存在的属性,则执行订购. 只有在您有办法用Cosmosdb进行订购的情况下,请添加答案.
8 2024-03-25
编程技术问答社区
MS Access-SQL查询每一天的平均数据
我在3天内有一组数据跨度.基于左侧的第一列,是否有可能具有根据每天的左侧计算第三列中值的平均值的查询? 最终结果将是两个列: 1/1/2008 | 1.605 2/1/2008 | 1.59 3/1/2008 | 1.56 我认为逻辑将是循环中的类似: 基于第一列的一天,如果是同一天,请计算行数并添加第三列的值 使用第三列的值的总和除以行数以获取平均值 天 + 1 但是我们如何在MS访问中实现循环? 这是一组数据: 编辑: 如果我想在日期之前进行分组,那天是昨天的下午6点到今天下午6点之间的一天? BETWEEN条款将检查昨天的18:00:00与今天的18:00:00之间的记录.例如,对于 1/1/2008 ,记录将从1/1/2008 6:00PM到2/1/2008 6:00PM开始.对于 2/1/2008 ,该记录将从2/1/2008 6:00PM到2008年3月1日下午3:00.依此类推... 我有一个代码段,可以检查以下内
14 2024-03-21
编程技术问答社区
基于PostgreSQL中10分钟间隔的测量,对时间性DB进行平均聚合
我有一个时间数据库,我想通过按时间序列使用以下时间序列来通过平均函数进行时间汇总: : Hourly average of HH= (HH-1):51, HH:01, HH:11, HH:21, HH:31, HH:41. 此外,上述值是瞬时值. 样本数据: ambtemp ddate_ttime 1 -1.42 2007-09-28 23:39:09 2 -1.24 2007-09-28 23:41:09 3 -1.28 2007-09-28 23:43:09 4 -1.28 2007-09-28 23:45:09 5 -1.24 2007-09-28 23:47:09 6 -1.42 2007-09-28 23:49:09 7 -1.68 2007-09-28 23:51:09 8 -1.76 2007-09-28 23:53:09 9 -1.96 2007-09-28
12 2024-03-21
编程技术问答社区
均匀间隔的多重平均数
我正在尝试学习SQL,所以请耐心等待.我正在使用postgresql 9.3 我想根据日期窗口平均一列.我已经能够编写窗口函数,可以通过set interval来完成此操作,但是我希望能够使用成长的interval来完成此操作.我的意思是: average values from date_0 to date_1 average values from date_0 to date_2 average values from date_0 to date_3 ..... so date date_0 stays the same and date_x grows and creates a larger sample 我假设有一种比我想平均每个范围的查询更好的方法.任何建议将不胜感激.谢谢. 编辑 我正在尝试创建均匀间隔的箱,用于汇总表的值. 我来到以下时间: (MAX(date) - MIN(date)) / bins 其中date是表的列 b
10 2024-03-21
编程技术问答社区
Datatable计算方法 将字符串列转换为日期
我在DataTable中有一个具有格式dd/MM/yyyy HH:mm的日期.我使用下面的代码填充数据表,该代码对1个以上的选择语句是常见的,因此在填充数据表之前,我无法指定列及其数据类型.填充数据后的任何操作都是我可以接受的. data_adapt = New OracleDataAdapter(query, OraConn) dt = New DataTable data_adapt.Fill(dt) 用于分页,我使用跳过创建数据副本,然后按以下 进行. dtLineupCopy = New DataTable dtLineupCopy = dtLineup.AsEnumerable().Skip(startRows).Take(pageSize)).CopyToDataTable() 现在问题是当我使用计算方法时,它不会将列值视为日期类型,而是从列而不是最小值返回一些随机的日期值. Arvdate = dtLineupCopy.Compute("Min(Ar
8 2024-03-11
编程技术问答社区
如何从一个按索引存储数组元素的规范化表中获取数组?
我有一个表格存储数组元素,它们属于它们的数组 他们在数组中的索引.看起来很聪明,因为阵列是 预计会很稀疏,并且其元素单独更新. 假设这是桌子: CREATE TABLE values ( pk TEXT, i INTEGER, value REAL, PRIMARY KEY (pk, i) ); pk | i | value ----+---+------- A | 0 | 17.5 A | 1 | 32.7 A | 3 | 5.3 B | 1 | 13.5 B | 2 | 4.8 B | 4 | 89.1 现在,我想将它们作为真实数组,即{17.5, 32.7, NULL, 53}对于b. a and {NULL, 13.5, 4.8, NULL, 89.1} 我本来希望通过分组查询很容易 和适当的聚合功能.但是,事实证明那里 不是这样的功能,它将元素通过其索引置于数组(或 下标,正如Postgres所说的那样
32 2024-03-07
编程技术问答社区
Postgres FROM查询,其中一个列名是
作为上一个问题的后续行动: 多列和单词之间的匹配在嵌套数组 我有以下查询: SELECT row_number() OVER (ORDER BY t.id) AS id , t.id AS "RID" , count(DISTINCT a.ord) AS "Matches" FROM tbl t LEFT JOIN ( unnest(array_content) WITH ORDINALITY x(elem, ord) CROSS JOIN LATERAL unnest(string_to_array(elem, ',')) txt ) a ON t.description ~ a.txt OR t.additional_info ~ a.txt GROUP BY t.id; 可以正确匹配我,但是现在array_content的值需要动态,也是列值之一. 可以说我正在使用聚合器函数在查询中获取
4 2024-03-06
编程技术问答社区