永发信息网

sql server 取一个字段 的前5

答案:3  悬赏:10  手机版
解决时间 2021-02-09 17:24
现有张表 T1 字段为 a,b,c,d,e
现想要的结果为,不同C列 按e值 降序拍前5.
等于说 C有很多不同值, 每个值 取 E列 的前5.
比如C有 11个不同值,最后 select 的结果 应该是 11*5 55条 ,不知道这么说还清楚
最佳答案
是不是C列就是分类,E列就是具体的值,然后需要按照C分组,并取分组后的每组的E列的前5条?
如果是就看看以下语句
--分组排序 
select row_number() over(partition by C order by E DESC) no,a,b,c,d,e  
from t1

--将分组排序的查询当作一张表查询,需要按照上面排序,可以自己修改,这里处理为所描述的降序,根据no判断,小于等于5的就是需要的数据 
 select *  
from (
select row_number() over(partition by C order by E DESC) no,a,b,c,d,e  
from t1
) a  
where a.no <= 5
全部回答
select c,e from (select c,e,row_number() over( partition by c order by e) rownum from tb)a where rownum<=5 row_number是一个函数,按c分组,按e排序,然后给每行一个序号 然后从结果中去除序号小于等于5的就满足题意。
由于不知道你是用sqlserver还是oracle,我就先给你一个sqlserver版本的吧! 如果你的字段定义是id为字符类型(nvarchar或varchar),而goid也是字符类型的话就很简单了! 直接用like或者charindex就行了! 测试sql如下: create table #1(id varchar(10),goid varchar(10)); insert into #1( id,goid)values('123456','345'),('222444','123'),('56789','89'),('123','1'); select * from #1 where id like '%'+goid+'%'; select * from #1 where charindex(goid,id)>0; drop table #1; 如果你的字段定义是id为字符类型(nvarchar或varchar),而goid是整型(int,tinyint等)的话就要转换一下! 测试sql如下: create table #2(id varchar(10),goid int); insert into #2( id,goid)values('123456',345),('222444',123),('56789',89),('123',1); select * from #2 where id like '%'+convert(varchar,goid)+'%'; select * from #2 where charindex(convert(varchar,goid),id)>0; drop table #2; 如果不属于上面两种情况,参考照转换方法都可以解决! 下面是oracle版本的! 因为oracle会自己来处理这些问题,直接用like或instr就行了!不分类型哈! 测试sql如下: create table t1 (id nvarchar2(10),goid varchar(10)); insert into t1( id,goid)values('123456','345'); insert into t1( id,goid)values('222444','123'); insert into t1( id,goid)values('56789','89'); insert into t1( id,goid)values('123','1'); select * from t1 where id like '%'||goid||'%'; select * from t1 where instr(id,goid)>0; drop table t1;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
海康威视面试后若不录用的话会发拒信吗
一个长方体木块,可以截成两个完全相等的正方
邮政卡能办定期存款吗?老公有我的卡和户口本
每逢星期四你上什么课英语怎么说
新城加油站我想知道这个在什么地方
陆地上生活的生物一般都有防止水分散失的结构
厨卫生活馆这个地址在什么地方,我要处理点事
微软模拟飞行10自动驾驶,高手进。
PASSWORD:ENTER TEXT
友达面馆徐州绿地店地址在哪,我要去那里办事
如何让普通用户有执行某个service命令的权限
耳朵后面有点臭臭的
love story安迪威廉姆斯歌词?
歌词就到茅山去学学 是哪首歌
以下变异实例中,属于不遗传的变异是BA. 人的
推荐资讯
能够消化糖类、蛋白质和脂肪这三种有机物的消
已知圆的半径为2cm,弧长为6cm的圆弧所对的圆
国家公务员有没有法院的职位
舒雅美发厅地址有知道的么?有点事想过去
山字旁加一个含是什么字
【主我想为你唱首歌】我想为你唱首歌作文
x 4.35—1.25=10怎么解方程
雷士照明(建设西路店)地址在什么地方,我要处
我想问,如果账本不贴印花税票有什么影响呢?
单选题一对夫妇生了一对异卵双胞胎,其父母给
大豆油是转基因的吗
乐花花审核过后多久放款
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?