查询最新的一组数据 返回
db.Queryable<SensorData>().Where(it => snList.Contains(it.sensor_sn)).SplitTable(tabs => tabs.Take(3)).ToList();取id最大的一组by sensor_sn,怎么实现
热忱回答(6)
-
fate sta VIP0
2022/12/13没听懂
0 回复 -
大小孩 VIP0
2022/12/13@fate sta:select
s.id,
s.name,
s.sn,
sd.tested,
sd.value,
sd.temperature
from (
(SELECT id,sensor_sn,tested,value,ain,temperature from sensor_data_20220101
where sensor_sn in(
select
sn
from sensor WHERE id in(
select sensor_id from project_sensor where project_id=3))
)
UNION ALL
(SELECT id,sensor_sn,tested,value,ain,temperature from sensor_data_20230101
where sensor_sn in(
select
sn
from sensor WHERE id in(
select sensor_id from project_sensor where project_id=3))
)
)as sd
LEFT join sensor s on s.sn=sd.sensor_sn
WHERE
sd.id in
(
select max(id) from (
(SELECT id, sensor_sn from sensor_data_20220101
where sensor_sn in(
select
sn
from sensor WHERE id in(
select sensor_id from project_sensor where project_id=3))
)
UNION ALL
(SELECT id, sensor_sn from sensor_data_20230101
where sensor_sn in(
select
sn
from sensor WHERE id in(
select sensor_id from project_sensor where project_id=3))
)) as sd1
GROUP BY sd1.sensor_sn);实现这个语句
0 回复 -
fate sta VIP0
2022/12/13vartest48 = db.Queryable<Order>().Select(it =>new{index2 = SqlFunc.RowNumber(it.Id,it.Name),//order by id partition by name//多字段排序 order by id asc ,name desc//SqlFunc.RowNumber($"{it.Id} asc ,{it.Name} desc ",$"{it.Name}")price=it.Price,date=it.CreateTime}).MergeTable()//将结果合并成一个表.Where(it=>it.index2==1).ToList();0 回复 -
大小孩 VIP0
2022/12/14@fate sta:还是没弄明白一条语句怎么实现,我现在拆开来弄的,如何用一条语句呢,谢谢
List<long> idx = db.Queryable<SensorData>().Where(it => snList.Contains(it.sensor_sn)).Where(it => it.channel == "X").SplitTable(tabs => tabs.Take(3)).GroupBy(it => it.sensor_sn).Select(it => SqlFunc.AggregateMax(it.id)).ToList(); // x轴最新数据id
List<SensorData> sdx = db.Queryable<SensorData>().Where(it => idx.Contains(it.id)).SplitTable(tabs => tabs.Take(3)).ToList();
0 回复 -
fate sta VIP0
2022/12/14@大小孩: 你把sql的 rownumber partition by 这种语法搞懂就知道怎么做了
0 回复 -
fate sta VIP0
2022/12/14partition by 代表分组 然
数据就是
分组列 number 主键列
A 1 1
A 2 2
B 1 3
B 2 4
number=1就是分组第一条
0 回复