sql 查询分组最大值最小值和对应发生时间
1、假设“测值表”结构和内容如图所示,需要查询每一个测点测值的最大值/最小值及发生时间
2、使用Group By可以查询得到每个测点的最大值/最小值,但是需要同时查询发生时间时,会出现错误:“选择列表中的列 '测值表.时间' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。”
3、针对这一需求,有两种嵌套查询方法,一种是在嵌套查询中使用笛卡尔积,一种是在嵌套查询中使用连接查询。
1、求最大值,注意图中红线标出的语句
select 测点编号,
测值 as 最大值,
时间
from 测值表
where ID not in
(select a.ID from 测值表 a,测值表 b
where a.测值<b.测值 and a.测点编号=b.测点编号);
select 测点编号,
测值 as 最大值,
时间
from 测值表
where ID not in
(select a.ID from 测值表 a
inner join 测值表 b on a.测点编号=b.测点编号
where a.测值<b.测值);
2、求最小值,注意图中红线标出的语句
select 测点编号,
测值 as 最小值,
时间
from 测值表
where ID not in
(select a.ID from 测值表 a,测值表 b
where a.测值>b.测值 and a.测点编号=b.测点编号);
select 测点编号,
测值 as 最小值,
时间
from 测值表
where ID not in
(select a.ID from 测值表 a
inner join 测值表 b on a.测点编号=b.测点编号
where a.测值>b.测值);
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:91
阅读量:196
阅读量:45
阅读量:49
阅读量:23