Mysql MS SQL基于其他表的不同结果
我想生成一个新表,根据主键显示另一个表的第一个和最后一个条目 我有一个仪表表,其中包含所有Mysql MS SQL基于其他表的不同结果,mysql,sql,sql-server,linq,Mysql,Sql,Sql Server,Linq,我想生成一个新表,根据主键显示另一个表的第一个和最后一个条目 我有一个仪表表,其中包含所有仪表ID 仪表表 MeterId CostPerUnit 1 1.23 2 4.14 3 5.31 4 13.13 MeterId StartTime NumberOfUnits 1 2002-12-01 00:01:00 25 1 2002-12-01 00:30:00 78 1 2003-09-01 02:30:00 30 1
仪表ID
仪表表
MeterId CostPerUnit
1 1.23
2 4.14
3 5.31
4 13.13
MeterId StartTime NumberOfUnits
1 2002-12-01 00:01:00 25
1 2002-12-01 00:30:00 78
1 2003-09-01 02:30:00 30
1 2008-07-02 01:00:00 15
2 1999-01-01 00:30:00 23
2 2000-03-23 05:03:00 30
2 2008-04-18 18:30:00 25
3 2006-04-03 12:00:00 30
4 2004-04-04 11:30:00 13
4 2008-09-09 15:00:00 15
然后我有一个测量表,每半小时记录一次,比如
测量表
MeterId CostPerUnit
1 1.23
2 4.14
3 5.31
4 13.13
MeterId StartTime NumberOfUnits
1 2002-12-01 00:01:00 25
1 2002-12-01 00:30:00 78
1 2003-09-01 02:30:00 30
1 2008-07-02 01:00:00 15
2 1999-01-01 00:30:00 23
2 2000-03-23 05:03:00 30
2 2008-04-18 18:30:00 25
3 2006-04-03 12:00:00 30
4 2004-04-04 11:30:00 13
4 2008-09-09 15:00:00 15
结果表应如下所示:
MeterId FirstAvailability LastAvailability
1 2002-12-01 2008-07-02
2 1999-01-01 2008-04-18
3 2006-04-03 2006-04-03
4 2004-04-04 2008-09-09
因此:
选择DISTINCT CAST(StartTime作为日期)
)ORDER BY ASC
和ORDER BY DESC
,但不确定如何迭代所有的MeterId)-测量表由1000万行和8000米ID组成。您可以使用聚合函数min()max()和group by
select a.MeterId, min(a.StartTime), max(StartTime)
from Measurement
group by a.Meter
可以使用聚合函数min()max()和group by
select a.MeterId, min(a.StartTime), max(StartTime)
from Measurement
group by a.Meter
使用max(),min()
使用max(),min()
简单的最小值/最大值可以在这里使用
SELECT
FirstAvailability = MIN(StartTime),
LastAvailability = MAX(StartTime)
FROM
Measurement
GROUP BY
MeterID
ORDER BY
MeterID
简单的最小值/最大值可以在这里使用
SELECT
FirstAvailability = MIN(StartTime),
LastAvailability = MAX(StartTime)
FROM
Measurement
GROUP BY
MeterID
ORDER BY
MeterID
日期在白天必须是唯一的-我不确定这意味着什么,如果两个米有相同的开始时间,则排除规则?日期在白天必须是唯一的-我不确定这意味着什么,如果两个米有相同的开始时间,则排除规则?执行此查询大约需要3分钟,这是预期的速度吗?这应该是另一个问题。答案大致取决于您要查询的记录数量,以及MeterID和StartTime字段(如果有的话)属于哪种索引。作为一个单独的问题问这个问题,你会得到更好的反馈。执行这个查询大约需要3分钟,这是一个预期的速度吗?这应该是另一个问题。答案大致取决于您要查询的记录数量,以及MeterID和StartTime字段(如果有的话)属于哪种索引。你最好把这个问题作为一个单独的问题来回答。