
参考
首先,该问题对应的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的学生姓名等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)