排名 sql

简介:

结构为
user scores
1      80
2     7
3     99
4     58
..

比如我想计算user
=4在此表中的排名应该如何做?

SELECT COUNT* ) FROM user_test WHERE scores >= ( SELECT scores FROM user_test 
WHERE user =4 ) 


--参数说明:
--
sc 表名
--
name 人名
--
mark 分数
--
ord 名次


1、并列,有空档,名次是不连续的(有两个第二名,接下来的就是第四名)。
update sc set ord=(select count(*)+1 from sc B where B.mark>sc.mark)
说明:其实就是求出分数比他多的人数,再加上1。


2、并列,无空档,名次总是连续的
update sc set ord=(select count(*from (select distinct mark from sc) as distmark where distmark.mark >=sc.mark)
说明:
select distinct mark from sc 是求出不重复的分数,然后看你的分数排在哪个位置。

 

--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
--
*/

--2. 名次生成方式2,Score重复时保留名次空缺
SELECT *,Place=(SELECT COUNT(Score) FROM tb WHERE Score>a.Score)+1
FROM tb a
ORDER BY Place
/*--结果
Name       Score        Place 
--------------- ----------------- ----------- 
aa         99.00        1
ee         78.00        2
gg         78.00        2
dd         77.00        4
ff         76.00        5
bb         56.00        6
cc         56.00        6
ff         50.00        8
--
*/

    本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2009/09/23/1572290.html,如需转载请自行联系原作者



相关文章
|
SQL
leetcode-SQL-1407. 排名靠前的旅行者
leetcode-SQL-1407. 排名靠前的旅行者
145 1
|
SQL HIVE
【Hive SQL 每日一题】分组排名取值
创建了一个名为`sales_data`的测试表,包含商品ID、销售额和销售日期。展示了部分示例数据。接着,提供了三个SQL查询:1) 查找每个商品销售额最高的记录;2) 获取每个商品最近和最远的销售记录;3) 求每个商品距今第二近的销售记录。每个查询都利用了窗口函数来处理数据,并给出了相应的查询结果图。
378 1
SQL 查找入职员工时间排名倒数第三的员工所有信息
SQL 查找入职员工时间排名倒数第三的员工所有信息
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_105 排名靠前的旅行者
「SQL面试题库」 No_105 排名靠前的旅行者
|
SQL 数据挖掘 关系型数据库
「SQL面试题库」 No_8 分数排名
「SQL面试题库」 No_8 分数排名
【SQL开发实战技巧】系列(十四):计算消费后的余额&计算银行流水累计和&计算各部门工资排名前三位的员工
本篇文章讲解的主要内容是:***通过模拟计算消费流水账及计算银行流水累计和讲解sum()over()函数使用场景、通过计算各部门工资排名前三位的员工小案例来介绍ROW_NUMBER、RANK、DENSE_RANK使用方法及区别***
【SQL开发实战技巧】系列(十四):计算消费后的余额&计算银行流水累计和&计算各部门工资排名前三位的员工
|
SQL 数据挖掘 Python
SQL2 查找入职员工时间排名倒数第三的员工所有信息
SQL2 查找入职员工时间排名倒数第三的员工所有信息
369 0
SQL2 查找入职员工时间排名倒数第三的员工所有信息
|
SQL 运维 Oracle
LeetCode-SQL高手挑战】—178. 分数排名
LeetCode-SQL高手挑战】—178. 分数排名
256 0
LeetCode-SQL高手挑战】—178. 分数排名
SQL Server成绩统计分析中的排名问题介绍
成绩分析中经常遇到的问题就是排名问题了,今天给大家介绍一下SQL Server排名中经常用到的ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE()这四个好兄弟。
SQL Server成绩统计分析中的排名问题介绍
|
SQL 关系型数据库 MySQL
教你用SQL实现统计排名
在某些应用场景中,我们经常会遇到一些排名的问题,比如按成绩或年龄排名。排名也有多种排名方式,如直接排名、分组排名,排名有间隔或排名无间隔等等,这篇文章将总结几种MySQL中常见的排名问题。
1085 0