SQL srever 查出每天中时间最大的一行

1、我的数据格式

我的数据采集频率10s/次,数据格式如下。
第一列是时间,格式是:2022年01月01日00时00分00秒。

2、想要的效果

我要查出每天时间最大的一行,把每天的最大时间,如20220101的最大时间,在这里是23时59分55秒。
在这里插入图片描述

3、我用的一个“苦力”方法:

  where DateTime =( select MAX(DateTime) from [历史列表2022] where DateTime like '20220101%' )
 or DateTime =( select MAX(DateTime) from [历史列表2022] where DateTime like '20220101%' )

在这里插入图片描述
因为一年也才365天,我干脆 or 365个,用excel 下拉,替换,也挺快能实现。(可以调出我想要的数据。)
领导老板,当然不会乐意。

4、参考的更好写法

于是我参考:
https://blog.csdn.net/weixin_38187317/article/details/109998135?spm=1001.2014.3001.5506
基本上是全盘拷贝。
可以直接看上文的例子,内容简单。
我们原始数据的区别是,参考原文的数据,例子如下:
在这里插入图片描述
而我,作为标识的数据,只有DateTime 这一列。我要先筛选一下。或者说先按上文的例子作个(id,这个简单,复制一下DateTime ,就可以)而他的other_id(要分组的字段),我是要用“日期分类的”那就(截取我DateTime的前8位):
构成如下:
在这里插入图片描述

在这里插入图片描述

这时,完全参照上文的例子。:
在这里插入图片描述
在这里插入图片描述
报列名无效。
我想,可能这么查出来的只是临时列,并不属于这个table。
所以我把这个表,新建了视图。

5、改动—新建视图:

新建视图,设计,把刚才的查询语句,放过来就行了。

SELECT  [DateTime],
     [DateTime] AS id,
	 LEFT(DateTime, 8) AS riqi 

在这里插入图片描述

6、按自己的数据改例子

上面提到的链接,两个方法都可用:
自己改吧。
这是我的,我做一下记录:
方法一

  select* FROM [控制器数据库].[dbo].[View_1]
 where id  in(
  select max(id) as maxid
  from [View_1]
  inner join
  (
	select riqi as b_riqi ,MAX (DateTime) max_date
	from [View_1]
	group by riqi
  ) b
  on  riqi = b_riqi and DateTime= max_date
  group by riqi)

方法2

 select* FROM [控制器数据库].[dbo].[View_1]
 where id  in(
  select max(id) as maxid
  from [View_1]
  LEFT JOIN
  (
	select riqi as b_riqi ,MAX (DateTime) max_date
	from [View_1]
	group by riqi
  ) b
  on  riqi = b_riqi and DateTime= max_date
  group by riqi,max_date
having max_date is not null)
 order  by riqi desc

7、结果没问题:

在这里插入图片描述
之前那个 or 的办法验证一下:
在这里插入图片描述
结果都是200行,笨办法时间久了一点。

接下来希望后期继续补充

8、后期工作

group byINNER JOIN
LEFT JOIN
having
等关键词的用法。

9、重要参考文献

1: https://blog.csdn.net/weixin_38187317/article/details/109998135?spm=1001.2014.3001.5506

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值