c# - LINQ 或 SQL:使用不同值的总和进行分组
问题描述
我在 SQL Server 2019 上有一个数据库表,其中包含以多种频率(每天、每周或每月)收集的价格时间序列,我使用 EF Core 3.1 进行查询
我试图提取这些价格,按月汇总,但不会丢失收集频率的信息。
从以下一组数据:
我试图得到这个,它包含价格的总平均值,按月份分组,以及原始记录的频率。
这些可以通过使用轻松解决
string.Join(",",s.Select(innerSel=>innerSel.OriginalFrequency).Distinct())
但不幸的是,我不能使用,因为我需要处理IQueryable
对象并仅在最后根据页面大小获取数据子集时运行 LINQ 查询的执行,因为之前将查询转换为 List分组意味着从数据库中获取数千条记录。
我试图使用频率的 SUM 和 COUNT 的组合,以便通过将这两个值相乘来轻松理解哪个是原始组合(参见下面的模式),但是 COUNT 和 SUM 应该只计算不同的值,否则,它不会不行。
有没有办法不以某种方式丢失这些信息,而不会使数据库服务器超载请求不必要的数据或发出多个请求?
这是我卡住的代码:
var aggregatedMonthlyPrices = prices.GroupBy(g => new
{
g.DateMonth,
g.DateYear
}).Select(s => new
{
DateMonth = s.Key.DateMonth,
DateYear = s.Key.DateYear
Price=s.Average(avg=>avg.Price),
FrequencySum= s.Sum(sum=>sum.DataCollectionFrequencyId),
FrequencyCount = s.Count(),
});
解决方案
推荐阅读
- r - 如何比较 R 中的 3 个二进制变量?
- javascript - Typescript 和 JavaScript 中的 server.listen 回调函数
- swift - iPhone OS 14.2 中的应用程序未加载和获取 XPC 连接无效错误
- javascript - 从 https://example.com 连接到解析服务器失败
- node.js - 为什么我得到一个损坏的图像图标?
- javascript - React GraphQL 和 ApolloServer:未处理的拒绝(错误):GraphQL 错误:在初始化之前无法访问“post”
- bash - 使用脚本自动化交互式会话
- mysql - 我正在尝试为一个项目制作座位预订系统。此代码无法显示哪些座位已被占用
- c# - WCF 在 IIS 中发布 - 无法获取 wsdl 定义
- r - 使用 r 以周为单位对数据进行分组