为了账号安全,请及时绑定邮箱和手机立即绑定

SQL语句理解问题

SQL语句理解问题

牛魔王的故事 2018-12-06 16:42:32
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) 这句语句 有谁能帮帮我吗
查看完整描述

4 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

每次 查询 比当条 积分大的或者等于的记录数,如果是 sql 2005,可以直接使用排名函数,更好理解

SELECT *,Place=DENSE_RANK() OVER(ORDER BY score DESC)
FROM tb a
ORDER BY Place
查看完整回答
反对 回复 2019-01-07
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

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

查看完整回答
反对 回复 2019-01-07
?
万千封印

TA贡献1891条经验 获得超3个赞

COUNT(DISTINCT Score)  :DISTINCT Score 取出重复的Score

一起就表示去除重复Score的个数

最终结果赋值给Place

明白了吧

查看完整回答
反对 回复 2019-01-07
  • 4 回答
  • 0 关注
  • 575 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信