sql server 分组成绩前100名的数据

sql server 分组成绩前100名的数据,第1张

参考

首先,该问题对应的SQL如下

select 采购类别,客户,订货总额

from (select 采购类别,客户,订货总额,

row_number() over(partition by 采购类别 order by 订货总额 desc) rn

from table_name) a

where rn<=2

;

其次,常用数据库比如Oracle和Sqlserver都有特定函数完成分组排序的功能,如果需要显示并列的情况可以用下面另外的2个

分别有3个类似函数:

row_number() over

这个函数不需要考虑是否并列,哪怕根据条件查询出来的数值相同也会进行连续排名。也是最常用的函数,排序结果类似于1,2,3,4,5

rank() over

查出指定条件后进行一个排名,但是有一个特点。假如是对学生排名,那么实用这个函数,成绩相同的两名是并列。排序结果类似于1,2,2,4,5

dense_rank() over

比较特殊,排序结果类似于1,2,2,3,4

declare @currMonth as DateTime

declare @prevMonth as DateTime

set @currMonth = cast(cast(year(getdate()) as varchar(4)) + right('0'+cast(month(getdate()) as varchar (2)),2) + '01' as DateTime);

set @prevMonth = DATEADD(month,-1,@currMonth)

--本月

select usid, SUM(cont) as total_cont from biao where [Time] >= @currMonth and [Time] < DATEADD(month,1,@currMonth)

group by usid

order by total_cont desc

--上月

select usid, SUM(cont) as total_cont from biao where [Time] >= @prevMonth and [Time] < @currMonth

group by usid

order by total_cont desc

如果希望用一列专门显示名次,可以使用mssql 2005提供的rank()函数。例如:本月可以这么写

select rank() over(order by sum(cont) desc) as rnk,usid, SUM(cont) as total_cont from biao where [Time] >= @currMonth and [Time] < DATEADD(month,1,@currMonth)

group by usid

order by total_cont desc

这样:

select from

(select top 10 id,score

from table

order by score) a

where aid not in (select top 9 id from table order by score)

扩展资料:

注意事项

SELECT 语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。

:语法

SELECT 列名称 FROM 表名称

以及:

SELECT FROM 表名称

注释:SQL 语句对大小写不敏感。SELECT 等效于 select。

如需获取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表),请使用类似这样的 SELECT 语句:

SELECT LastName,FirstName FROM Persons

dim index,paimin

paimin=1

Set Index=ConnExecute("SELECT FROM chengji ORDER BY mark DESC")

IF not(IndexEOF AND IndexBOF) Then

Do While NOT (IndexEOF And Index("name")="王明")

paimin=paimin+1

IndexMoveNext

loop

end if

responsewrite paimin

indexclose

set index=nothing

-----------

不知道有没有简单点的方法

1、首先在打开的SQL Server中,假设有两条数据中,包含有张,但是这个张一前一后,如下图所示。

2、此时就能利用Select和From语句,查询数据,如下图所示。

3、但是要查找姓名中包含有张,那么不能用等号,如下图所示。

4、因此一定要必须使用Like关键字,才能查询SQL的数据。

5、这个时候,如果单对张字后加个百分号是不允许的,这样只能查找姓张的数据。

6、如果想要前后都有关键字张,那么一定要在前后都加百分号,就能实现模糊查找姓名。

以上就是关于sql server 分组成绩前100名的数据全部的内容,包括:sql server 分组成绩前100名的数据、mssql数据库asp排行统计数据(按月份查询排行)、SQL语句查询排名第10的学生姓名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9406088.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存