需求如下:create table AA
(
id int, --排名
point int, --得分
name varchar(50) --姓名
)
表数据如下:
1 100 张三
2 80 李四
3 80 王五
4 75 杨六
5 75 方七现在想按照运动会那样排序,得到这样的结果
1 100 张三
2 80 李四
2 80 王五
4 75 杨六
4 75 方七请问这sql怎么写,AA表中的数据也是通过查询得来的
请大家帮帮忙,谢谢
(
id int, --排名
point int, --得分
name varchar(50) --姓名
)
表数据如下:
1 100 张三
2 80 李四
3 80 王五
4 75 杨六
5 75 方七现在想按照运动会那样排序,得到这样的结果
1 100 张三
2 80 李四
2 80 王五
4 75 杨六
4 75 方七请问这sql怎么写,AA表中的数据也是通过查询得来的
请大家帮帮忙,谢谢
select
排名=RANK() over (order by point desc )
,point,name
from AA
point,
name
FROM AA T
--> 测试数据:[TB]
if object_id('[TB]') is not null drop table [TB]
create table [TB]([id] int,[point] int,[name] varchar(4))
insert [TB]
select 1,100,'张三' union all
select 2,80,'李四' union all
select 3,80,'王五' union all
select 4,75,'杨六' union all
select 5,75,'方七'select id=(select count([point])+1 from TB where T.[point]<[point]),point,name
from TB t/*
id point name
----------- ----------- ----
1 100 张三
2 80 李四
2 80 王五
4 75 杨六
4 75 方七(5 行受影响)
*/drop table TB
JOIN (SELECT POINT,MIN(ID) FROM TB GROUP BY POINT) AS T
ON A.ID=T.ID AND A.POINT=T.POINT
-- -----------t_mac 小编-------------------
--------------------希望有天成为大虾----
-- =========================================IF OBJECT_ID('aa') IS NOT NULL
DROP TABLE aa
GO
CREATE TABLE aa(ID int, POINT int , NAME varchar(10))
go
insert aa SELECT
1 , 100, '张三' UNION ALL SELECT
2 , 80, '李四' UNION ALL SELECT
3 , 80, '王五' UNION ALL SELECT
4 , 75, '杨六' UNION ALL SELECT
5 , 75, '方七'
GO
select
排名=RANK() over (order by point desc )
,point,name
from aago
排名 point name
-------------------- ----------- ----------
1 100 张三
2 80 李四
2 80 王五
4 75 杨六
4 75 方七
IF OBJECT_ID('AA') IS NOT NULL DROP TABLE AA
create table AA
(
id int, --排名
point int, --得分
name varchar(50) --姓名
)
INSERT INTO AA
SELECT 1, 100, '张三' UNION ALL
SELECT 2, 80, '李四' UNION ALL
SELECT 3, 80, '王五' UNION ALL
SELECT 4, 75, '杨六' UNION ALL
SELECT 5, 75, '方七'
SELECT ID
,(SELECT COUNT(DISTINCT POINT)+1 FROM AA T2 WHERE T2.POINT>AA.POINT) '名次'
,POINT,[NAME]
FROM AA
/*
ID 名次 POINT NAME
1 1 100 张三
2 2 80 李四
3 2 80 王五
4 3 75 杨六
5 3 75 方七
*/
from aa a
-- -----------t_mac 小编-------------------
--------------------希望有天成为大虾----
-- =========================================IF OBJECT_ID('aa') IS NOT NULL
DROP TABLE aa
GO
CREATE TABLE aa(ID int, POINT int , NAME varchar(10))
go
insert aa SELECT
1 , 100, '张三' UNION ALL SELECT
2 , 80, '李四' UNION ALL SELECT
3 , 80, '王五' UNION ALL SELECT
4 , 75, '杨六' UNION ALL SELECT
5 , 75, '方七'
GO
select
排名=(select count(point)+1 from aa where k.point<point)
,point,name
from aa kgo
排名 point name
-------------------- ----------- ----------
1 100 张三
2 80 李四
2 80 王五
4 75 杨六
4 75 方七
if object_id('[TB]') is not null drop table [TB]
create table [TB]([id] int,[point] int,[name] Nvarchar(4))
insert [TB]
select 1,100,N'张三' union all
select 2,80,N'李四' union all
select 3,80,N'王五' union all
select 4,75,N'杨六' union all
select 5,75,N'方七'select id=(select count(distinct point) from TB where T.[point]<=[point]),
point,
[name]
from TB t
/*
id point name
----------- ----------- ----
1 100 张三
2 80 李四
2 80 王五
3 75 杨六
3 75 方七(5 個資料列受到影響)
*/
create table [TB]([id] int,[point] int,[name] varchar(4))
insert [TB]
select 1,100,'张三' union all
select 2,80,'李四' union all
select 3,80,'王五' union all
select 4,75,'杨六' union all
select 5,75,'方七'SELECT ISNULL(T.ID,T.ID)ID,A.POINT,A.NAME FROM TB A
LEFT JOIN (SELECT POINT,MIN(ID)ID FROM TB GROUP BY POINT) AS T
ON A.POINT=T.POINT
(所影响的行数为 5 行)ID POINT NAME
----------- ----------- ----
1 100 张三
2 80 李四
2 80 王五
4 75 杨六
4 75 方七(所影响的行数为 5 行)
from TB t