c# - .net 临时表问题
问题描述
我有一个名为 Sensor 的模型的 c# .net 核心项目。
public class Sensor
{
public int Id { get; set; }
public long timestamp { get; set; }
[Display(Name = "Country")]
public string country { get; set; }
[Display(Name = "Region")]
public string region { get; set; }
[Display(Name = "Emitter")]
public string emitter { get; set; }
[Display(Name = "Value")]
public string value { get; set; }
}
我需要得到以下数据:
国家和地区的组合(称为标签)及其出现。在该标签上,添加发射器并分别计算出现次数。
前任:
美国南部 - 1000
usa.south.sensor01 - 700
usa.south.sensor02 - 300
加拿大.北 - 1500
canada.north.sensor01 - 1250
canada.north.sensor02 - 250
我最初的想法是使用临时表来保存值,但它不起作用。
CREATE TABLE _Results (Tag Varchar(150), Total Int)
INSERT INTO[_Results] (Tag, Total)"
SELECT country '.' region AS Tag, COUNT() AS Total
FROM Sensor
GROUP BY country, region
INSERT INTO[_Results](Tag, Total)
SELECT country '.' region '.' emitter AS Tag, COUNT() AS Total
FROM Sensor
GROUP BY country, region, emitter
SELECT * FROM _Results
DROP TABLE _Results
但我不能让它工作。
有人能帮我吗?内存使用解决方案不可用,所以我必须使用 SQL 和 Microsoft.EntityFrameworkCore
解决方案
不需要临时表
SELECT country + '.' + region AS Tag, '' as Emitter, COUNT() AS Total
FROM Sensor
GROUP BY country, region
UNION
SELECT country + '.' + region AS Tag, Emitter, COUNT() AS Total
FROM Sensor
GROUP BY country, region, emitter
为 Tag、Emitter 和 Total 创建一个实体。我们称之为统计。在 DBContext 中声明一个 dbset
public virtual DbSet<Statistic> Statistics { get; set; }
使用 FromSql 和 AsNoTracking 运行上述 SQL
query = context.Statistics
.FromSql(sql)
.AsNoTracking();
sql 是上面保存在字符串中的 SQL 查询。
推荐阅读
- java - 每次使用嵌套循环打印字符串时如何取出字符串的最后一个字符
- php - Tiktalik API,Laravel,获取请求,邮递员
- python - re.search() 只回馈 2 组,但应该回馈 5
- python - 查找列表中三个和的数量
- python - 从调用的 Python 代码向 UiPath Studio 序列返回参数
- node.js - 如何在 Node.js 源代码中运行测试?
- azure-cosmosdb - mongodump 停止而不转储每条记录
- c++ - 使用新参数第二次调用矩形绘图功能时出现问题
- ruby-on-rails - 如何使用 fields_for 从一个表单链接多个模型?
- php - 使用 Web 服务可以使用的参数设置 url