create table test (id int, name ), score int, classname )); ,,'一班'); ,,'一班'); ,,'一班'); ,,'二班'); ,,'二班'); ,,'二班'); select t.* from (select test.*,row_number() over (partition by classname order by score desc) rn from test) t ;
sql版本 select * from (select t.CloseDate,t.ExpiryDate,t.DataTypeLookupID,ROW_NUMBER() over(partition by CloseDate,ExpiryDate,DataTypeLookupID order by CloseDate,ExpiryDate,DataTypeLookupID) as new_index from dbo.IndexVolatilityMarketData t ) a where a
1.select first 1 * from shop; 正序查询第一条数据 2.select first 1 * from shop order by create_time desc; 按创建时间倒序查询第一条数据 3.select first 1 shopid from shop; 正序查询第一条数据中的shopid字段 4.select first 1 shopid from shop order by create_time desc; 按创建时间倒序查询第一条数据的shopid字段
当业务逻辑越来越复杂时,这个查询的需求会越来越多,今天写成笔记记录下来,防止再忘记 SELECT * FROM `notice` a where add_time > 1513008000 and admin_id >= 1 and admin_id <= 10 and status = 0 and 3 > (SELECT COUNT(1) FROM `notice` where add_time > 1513008000 and admin_id >= 1 and a
CREATE TABLE [dbo].[test1]( [program_id] [int] NULL, [person_id] [int] NULL ) ON [PRIMARY] /*查询每组分组中第一条记录*/ select * from test1 as a where a.person_id in ( person_id from test1 where program_id = a.program_id); select * from ( select ROW_NUMBER() ove
sql语句中,查询分组中前n条记录的sql语句如下 第一种方法 select * from consultingfeebill awhere n>(select count(*) from consultingfeebill where a.FundAccountType=FundAccountTypeand TradeAmount>a.TradeAmount)order by TradeAmount desc 第二种方法 select * from consultingfeebill a w
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.cod
mysql 查询每个分组前N条记录 假设存在表movie, 有字段 id, part(地区), mcount(观看次数) 现查询每个地区观看次数最多的3部movie, 则表 ###id虽未存在group列表 但不报错,原因未知… select a.part,a.id, a.mcount from movie a, movie b #下面的where子句产生迪卡尔积并进行筛选, 最大记录与自己产生一条记录(以自身数据为key), 第二位的 将与最大的数据及自身产生两条数据 ……以次类推where
检查重复记录 -- 检查重复code1 select count(identity) num, identity from event_log where code='code1' order by num desc 删除重复记录 DELETE FROM event_log WHERE `code`='code1' AND identity IN ( SELECT identity from ( ) a ) AND id NOT IN ( SELECT keepId FROM ( ) b ) 其
背景: A表.B表两表关联,关联出来的结果里B表有不止一条,需求是只要B表结果中的某一条(按某字段排序) 经过百度,发现 row_number() over(partition by a order by b desc)函数可用(需要说明下,order by 必须有缺少会报错),以下是数据环境及结果. 创建数据环境 create table A(ANAME varchar(20)); insert into A values('alan'); insert into A values('Ale
今天要做一个查询统计功能,一开始有点犯难,上午尝试大半天才写出统计sql语句,才发现自己sql分组查询及聚集函数没学好:其实就是group by子句和几个聚集函数,熟练使用统计功能很简单.在此总结下今天查询统计是用到的几个sql函数. SQL聚集函数 sum函数 sum函数用于计算查询表中指定字段中所有 记录值的总和. 语法:sum(exp) 说明:该函数不计算包含Null 值的字段. 例:SELECT SUM(population) FROM bbc 这里的SUM作用在所有返回记录的 popu