需求如下

每个设备(不同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进阶】查询每天、每个设备的第一条数据相关推荐

  1. sql分组查询每组最新的一条数据

    原文地址:https://www.cnblogs.com/java-spring/p/11498457.html 开发中经常会遇到,分组查询最新数据的问题,比如下面这张表(查询每个地址最新的一条记录) ...

  2. SQL 解决从分组数据中总是挑选第一条数据的问题

    为什么80%的码农都做不了架构师?>>>    [问题] 在数据库的查询中,记录被分为多个组,每个组中仍然有多条符合条件的记录,而仅需每组中的第一条记录组成新的临时数据表和其他查询结 ...

  3. mysql分组区某列最后一条_[MySQL]MySQL数据库如何按某列分组排序后查询每个分组的最后一条数据?...

    比如当前有如下的消息表(messages)及示例数据: Id Name Other_Columns ------------------------- 1 A A_data_1 2 A A_data_ ...

  4. Lambda表达式 Linq SQL Server 分组后获取第一条数据或最小(最大)数据

    1.Lambda表达式 以下是从网上粘贴下来  经测试失败 提示方法"First"只能用作最终查询操作.请考虑在这个实例中使用方法"FirstOrDefault" ...

  5. oracle分组查询取第一条数据,160804、oracle查询:取出每组中的第一条记录

    oracle查询:取出每组中的第一条记录 按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info group b ...

  6. SQL分组获取记录的第一条数据——PARTITION BY

    在查询数据时如果有重复,我们都知道可以用distinct去重,但使用distinct只能去除所有查询列都相同的记录,如果有一个字段不同,distinct是无法去重的,但我们还想要实现这样的效果,这时我 ...

  7. 利用partition分组查询 查询每个分组第一条数据

    利用partition分组查询 查询每个分组第一条数据 数据库:sqlserver (其他数据库没有尝试) row_number() over(partition by year(createtime ...

  8. SQL 连接 表,取副表的第一条数据

    两个表是一(A表)对多(B表)的关系,join的时候,B表只对应显示第一条数据(某些条件).sql该如何写? 表A Aid title days 1 清远二天游 2 2 东莞一天游 1 3 深圳小梅沙 ...

  9. php mysql只获取一条数据_php mysql 查询只返回第一条数据

    php mysql 查询只返回第一条数据 $search = mysql_query("select * from `info`"); $search = mysql_fetch_ ...

最新文章

  1. vue邪道玩法 : 把vue实例存在别的地方,以及可能会遇到的问题
  2. 结构主题模型(一)stm包工作流
  3. Java - concurrent包详解
  4. java web 截图_如何以Java实现网页截图技术
  5. spring Boot 2.1.5 (1)---安装环境
  6. 智能算法浅介----模拟退火,遗传算法,禁忌搜索,神经网络等
  7. springmvc全局异常处理ControllerAdvice区分返回响应类型是页面还是JSON
  8. python 正则表达式 速查表
  9. 恩尼格玛模拟器_用C语言编的恩格尼码模拟器
  10. python实战演练(二)三级菜单
  11. python自动轨迹绘制七边形_【高德地图API】从零开始学高德JS API(三)覆盖物
  12. 大学排行引发大争议,谁在给大学排座次?
  13. The types of the interface org.apache.flink.util.OutputTag could not be inferred.
  14. 关于iPhone出现白苹果黑屏现象的修复方法
  15. 【阿朱洞察】中国大数据行业的下一步走向
  16. 网络工具之HCL模拟器安装及使用 | 寻找C站宝藏
  17. NMEA报文解析程序(c语言)-命令解析
  18. Python+selenium 抓取美团单页接口数据里的用户评论和用户名称以及打分数据
  19. 投影仪和电视哪个更适合家庭用?买当贝投影好么?
  20. zemax设计35mm镜头_ZEMAX杂光分析实例

热门文章

  1. 医生c语言测试卷b卷的答案,合肥工业大学C语言期中测试题_B卷
  2. iDowns-v1.8.3 无缝对接erphpdown会员中心+在线充值+VIP开通+卡密插件
  3. 首席赚钱省钱专家小程序1.5.8+前端
  4. 怎样利用VNC远程连接LINUX桌面
  5. 网站是如何跟踪监视你的
  6. Python_百度图片以及百度贴吧图片抓取
  7. 目标检测论文阅读:Multi-scale Location-aware Kernel Representation for Object Detection(CVPR2018)
  8. Linux操作基础(十七)之Systemd入门教程(二)实战篇
  9. 什么是Vim,Vim及其安装
  10. Linux已经霸占了服务器领域