【发布时间】:2022-01-23 17:13:51
【问题描述】:
对不起,奇怪的标题我很难解释我需要什么,但我会尽力而为,
我的表 BehaviorHidraulics 包含以下列: [id],[siteIDDatagate],[datetime],[value],[channelnum],[channeltype],现在我需要在某个日期找到 [value] 的最小值,我已经设法做到了查询:
select min(value) as minvalue, siteIDDatagate, channeltype, channelnum, datetime
from BehaviorHidraulic where channelnum = '1' and datetime
between '2021-10-10 00:00:00' and '2021-10-10 23:59:59'
group by siteIDDatagate, channeltype, channelnum, datetime order by siteIDDatagate, minvalue ASC
现在返回如下内容:
minvalue siteIDDatagate
26 _site_1003
26,39 _site_1003
26,5 _site_1003
17,20 _site_303
17,600 _site_303
58,200 _site_304
58,599 _site_304
这很好,但我需要在每个站点的第一行下删除每个结果,以便它看起来像这样:
minvalue siteIDDatagate
26 _site_1003
17,20 _site_303
58,200 _site_304
我想我需要使用滞后功能,但我对 SQL 不是很好,所以非常感谢任何帮助
【问题讨论】:
-
从 GROUP BY 表达式和输出列表中删除多余的列。
-
从 grouü 中删除 datetime by 或将其更改为 DATE(datetime) 并将 datetime 添加到 fiellist 中,例如 select datetime ,.. your fields
-
@Akina 这不符合我的要求,它只是减少了结果中的列数。
-
是的,但是假设“channeltype”列将例如分组三个或四个不同的值,您希望在其他列中显示什么
-
这不符合我的要求,它只是减少了结果中的列数。 ???但是您已经接受了准确实现我的方法的答案。