在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Sqlserver 获取每组中的第一条记录 在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面、功能下面,从数据库的术语来说,就是查找出每组中的一条数据。下面我们要实现的就是在sqlserver中实现从每组中取出第一条数据。 例子 我们要从上面获得的有效数据为: 对应的sql语句如下所示: select * from t1 t where id = (select top 1 id from t1 where grp = t.grp order by createtime desc ) 下面给大家介绍oracle查询取出每组中的第一条记录 oracle查询:取出每组中的第一条记录 按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info group by type; 注意:select 后面的列要在group by 子句中,或是用聚合函数包含,否则会有语法错误。 方法二: SELECT * FROM( SELECT z.type , z.code ,ROW_NUMBER() OVER(PARTITION BY z.type ORDER BY z.code) AS code_id FROM group_info z ) WHERE code_id =1; 这里涉及到的over()是oracle的分析函数 参考sql reference文档: Analytic functions compute an aggregate value based on a group of rows. They differ from aggregate functions in that they return multiple rows for each group. 语法结构: analytic_function ([ arguments ]) OVER 其中analytic_clause结构包括: [ query_partition_clause ] 也就是:函数名( [ 参数 ] ) over( [ 分区子句 ] [ 排序子句 [ 滑动窗口子句 ] ]) 这里PARTITION BY 引导的分区子句类似于聚组函数中的group by,排序子句可看成是select语句中的order by. mysql 中只获取1条数据 SELECT * FROM 表 LIMIT 0, 10 LIMIT 接受一个或两个数字参数。 参数必须是一个整数常量。 如果给定两个参数,第一个参数指定第一个返回记录行的偏移量, 第二个参数指定返回记录行的最大数目。 初始记录行的偏移量是 0(而不是 1) 主意:limit 用于 having 之后 自己的示例: select count(1),tpc_equipment_code from tb_parts_consume GROUP BY tpc_equipment_code ORDER BY count(1) DESC LIMIT 1; |
请发表评论