【sql进阶】查询每天、每个设备的第一条数据
需求如下
每个设备(不同DeviceID)、每天会向数据库插入多条数据,求每天、每个设备插入的第一条数据。下面SQL中的 ShareRecommendID 类比不同设备的DeviceID。
ROW_NUMBER()函数介绍
说明:返回结果集分区内行的序列号,每个分区的第一行从 1 开始。 语法:ROW_NUMBER () OVER ([ <partition_by_clause>]<order_by_clause> ) 。 备注:ORDERBY 子句可确定在特定分区中为行分配唯一 ROW_NUMBER 的顺序。 参数:<partition_by_clause> :将FROM 子句生成的结果集划入应用了 ROW_NUMBER 函数的分区。 <order_by_clause>:确定将 ROW_NUMBER 值分配给分区中的行的顺序。 返回类型:bigint 。
方案1
使用ID自增长规则,取每天最小ID
sql
SELECT CONVERT(varchar(100), CreateTime, 23) AS share_date, CreateTime, * FROM _ShareRelation WHERE ShareRelationID in (select MIN(ShareRelationID) from _ShareRelation group by CONVERT(varchar(100), CreateTime, 23) ) ORDER BY [_ShareRelation].CreateTime DESC
方案2
思路类似方案1,采用最大函数
sql
SELECT CONVERT(varchar(100), CreateTime, 23) AS create_date,min(CreateTime) AS min_date,max(CreateTime) as max_date FROM [_ShareRelation] GROUP by CONVERT(varchar(100), CreateTime, 23) ORDER BY CONVERT(varchar(100), CreateTime, 23) DESC
方案3
使用ROW_NUMBER函数,对每天、每个设备的数据进行编号
sql
SELECT * FROM ( SELECT CONVERT(varchar(100), CreateTime, 23) AS share_date, ROW_NUMBER() OVER(PARTITION BY CONVERT(varchar(100), CreateTime, 23), ShareRecommendID ORDER BY CreateTime ASC) row_num, * FROM dbo.[_ShareRelation] ) AS tmp WHERE tmp.row_num < 2
搞定!
【sql进阶】查询每天、每个设备的第一条数据相关推荐
- sql分组查询每组最新的一条数据
原文地址:https://www.cnblogs.com/java-spring/p/11498457.html 开发中经常会遇到,分组查询最新数据的问题,比如下面这张表(查询每个地址最新的一条记录) ...
- SQL 解决从分组数据中总是挑选第一条数据的问题
为什么80%的码农都做不了架构师?>>> [问题] 在数据库的查询中,记录被分为多个组,每个组中仍然有多条符合条件的记录,而仅需每组中的第一条记录组成新的临时数据表和其他查询结 ...
- mysql分组区某列最后一条_[MySQL]MySQL数据库如何按某列分组排序后查询每个分组的最后一条数据?...
比如当前有如下的消息表(messages)及示例数据: Id Name Other_Columns ------------------------- 1 A A_data_1 2 A A_data_ ...
- Lambda表达式 Linq SQL Server 分组后获取第一条数据或最小(最大)数据
1.Lambda表达式 以下是从网上粘贴下来 经测试失败 提示方法"First"只能用作最终查询操作.请考虑在这个实例中使用方法"FirstOrDefault" ...
- oracle分组查询取第一条数据,160804、oracle查询:取出每组中的第一条记录
oracle查询:取出每组中的第一条记录 按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info group b ...
- SQL分组获取记录的第一条数据——PARTITION BY
在查询数据时如果有重复,我们都知道可以用distinct去重,但使用distinct只能去除所有查询列都相同的记录,如果有一个字段不同,distinct是无法去重的,但我们还想要实现这样的效果,这时我 ...
- 利用partition分组查询 查询每个分组第一条数据
利用partition分组查询 查询每个分组第一条数据 数据库:sqlserver (其他数据库没有尝试) row_number() over(partition by year(createtime ...
- SQL 连接 表,取副表的第一条数据
两个表是一(A表)对多(B表)的关系,join的时候,B表只对应显示第一条数据(某些条件).sql该如何写? 表A Aid title days 1 清远二天游 2 2 东莞一天游 1 3 深圳小梅沙 ...
- php mysql只获取一条数据_php mysql 查询只返回第一条数据
php mysql 查询只返回第一条数据 $search = mysql_query("select * from `info`"); $search = mysql_fetch_ ...
最新文章
- vue邪道玩法 : 把vue实例存在别的地方,以及可能会遇到的问题
- 结构主题模型(一)stm包工作流
- Java - concurrent包详解
- java web 截图_如何以Java实现网页截图技术
- spring Boot 2.1.5 (1)---安装环境
- 智能算法浅介----模拟退火,遗传算法,禁忌搜索,神经网络等
- springmvc全局异常处理ControllerAdvice区分返回响应类型是页面还是JSON
- python 正则表达式 速查表
- 恩尼格玛模拟器_用C语言编的恩格尼码模拟器
- python实战演练(二)三级菜单
- python自动轨迹绘制七边形_【高德地图API】从零开始学高德JS API(三)覆盖物
- 大学排行引发大争议,谁在给大学排座次?
- The types of the interface org.apache.flink.util.OutputTag could not be inferred.
- 关于iPhone出现白苹果黑屏现象的修复方法
- 【阿朱洞察】中国大数据行业的下一步走向
- 网络工具之HCL模拟器安装及使用 | 寻找C站宝藏
- NMEA报文解析程序(c语言)-命令解析
- Python+selenium 抓取美团单页接口数据里的用户评论和用户名称以及打分数据
- 投影仪和电视哪个更适合家庭用?买当贝投影好么?
- zemax设计35mm镜头_ZEMAX杂光分析实例
热门文章
- 医生c语言测试卷b卷的答案,合肥工业大学C语言期中测试题_B卷
- iDowns-v1.8.3 无缝对接erphpdown会员中心+在线充值+VIP开通+卡密插件
- 首席赚钱省钱专家小程序1.5.8+前端
- 怎样利用VNC远程连接LINUX桌面
- 网站是如何跟踪监视你的
- Python_百度图片以及百度贴吧图片抓取
- 目标检测论文阅读:Multi-scale Location-aware Kernel Representation for Object Detection(CVPR2018)
- Linux操作基础(十七)之Systemd入门教程(二)实战篇
- 什么是Vim,Vim及其安装
- Linux已经霸占了服务器领域