SQL语句理解问题

CREATE TABLE tb(Name varchar(10),Score decimal(10,2))
INSERT tb SELECT 'aa',99
UNION ALL SELECT 'bb',56
UNION ALL SELECT 'cc',56
UNION ALL SELECT 'dd',77
UNION ALL SELECT 'ee',78
UNION ALL SELECT 'ff',76
UNION ALL SELECT 'gg',78
UNION ALL SELECT 'ff',50
GO
 
--1. 名次生成方式1,Score重复时合并名次
SELECT *,Place=(SELECT COUNT(DISTINCT Score) FROM tb WHERE Score>=a.Score)
FROM tb a
ORDER BY Place
/*--结果
Name       Score        Place
---------------- ----------------- -----------
aa         99.00        1
ee         78.00        2
gg         78.00        2
dd         77.00        3
ff         76.00        4
bb         56.00        5
cc         56.00        5
ff         50.00        6
 
 
就是理解不了Place=(SELECT COUNT(DISTINCT Score) FROM tb WHERE Score>=a.Score) 这句语句 有谁能帮帮我吗
牛魔王的故事
浏览 577回答 4
4回答

SMILET

每次 查询 比当条 积分大的或者等于的记录数,如果是 sql 2005,可以直接使用排名函数,更好理解 SELECT *,Place=DENSE_RANK() OVER(ORDER BY score DESC) FROM tb a ORDER BY Place

Smart猫小萌

额,就是查score的重复次数条件是Score>=a.score

万千封印

COUNT(DISTINCT Score)  :DISTINCT Score 取出重复的Score 一起就表示去除重复Score的个数 最终结果赋值给Place 明白了吧
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server