Mysql 分组查询top n(多种方法)

Mysql 分组查询top n(多种方法),第1张

查询每门科目的前3名。

对于查询的结果,一般有两种情况

表所有数据为:

情况1:对于分数相同的人,其后面的人 紧跟着名次排,直到排够名次3,就不再往后取了。

情况2:对于分数相同的人,若当前相同名次的人数大于或等于 3, 则相同分数其后面的人不再参于top3了。

在情况2中 ,为什么”李四 - java“ 这行没有了呢?

可以这样理解,在情况2中相当于使用了 名次空缺 , 分数相同的人其后面那个人,的名次为 前面的人数+1 , 这里的 ”李四-java“这行,他的名次应当是 5 , 所有top3自然取不到 ”李四-java“这行。

情况2和情况 写法都是对应的, 需要注意的是 并列名次,后面的人 是否需要保持名次空缺。那么统计的时候就需要根据情况去重。

参考链接:

https://blog.csdn.net/weixin_44497013/article/details/107317719

https://leetcode-cn.com/problems/department-top-three-salaries/solution/mysqlzi-ding-yi-bian-liang-shi-xian-fen-lei-pai-xu/

top是指按顺序选取前几个数据。order

by是属性默认升序排列(asc),如果想倒序+desc

select

*和select

all

select

1一样是选取所有(任意一个)

top

3前3个

select

查询表达式是+表中的元组中的候选码

select

no

from

no是table表中的一个码,就是唯一标示这一元组的名字,额

就是名字

不能直接用select+数字

只能用select

123

as

no

数据库中top的用法的用法你知道吗?下面小编就跟你们详细介绍下数据库中top的用法的用法,希望对你们有用。

数据库中top的用法的用法如下:

在编写程序中,我们可能遇到诸如查询最热门的5篇文章或返回满足条件的n条记录的情况,在SQL语言中,可以使用TOP关键字来实现。

TOP关键字在SQL语言中用来限制返回结果集中的记录条数,其使用方法有两种形式,下面做以详细的介绍:

(1)返回确定数目的记录个数

语法格式: SELECT TOP n <列名表>FROM <表名>[查询条件]

其中,n为要返回结果集中的记录条数

(2)返回结果集中指定百分比的记录数

语法格式: SELECT TOP n PERCENT <列名表>FROM <表名>[查询条件]

其中,n为所返回的记录数所占结果集中记录数目的百分比数

举例说明:

假设数据库中有一个表存储的为学生的信息(student):

(1)SELECT TOP 20 * FROM student--查询前20名学生的信息

(2)SELECT TOP 20 * PERCENT FROM student --查询学生表中前20%的学生信息

在具体使用过程中,可以结合条件子句和排序子句(如何进行排序)等实现较为丰富的功能,如:

(1)查询年龄(sage)大于23的前20名学生的信息

查询语句为:SELECT TOP 20 * FROM student WHERE sage >23

(2)查询年龄较为大的前20名学生的信息

查询语句为: SELECT TOP 20 * FROM student ORDER BY sage DESC

在假设有一个表为新闻表(news),其列名定义如下:

ID 新闻编号, 整数型 自增字段

Title 新闻标题 , 字符串型(varchar)

Content 新闻内容,Text型

Hits 点击次数, 整数类型

AddDateTime 添加时间 ,字符串(YYYY-MM-DD)

则要求查询:

(1)查询最新10条新闻


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9970781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存