加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

[sql] mysql 8.0窗口函数rank()的排序作用及举例

发布时间:2022-10-17 14:02:09 所属栏目:MySql教程 来源:未知
导读: mysql在版本8.0后支持窗口函数,如row_number(),rank(),dense_rank(),NTILE(),PERCENT_RANK()等等。附上mysql8.0的下载地址:Download MySQL Installer
按照表occupations中列名Occupa

mysql在版本8.0后支持窗口函数,如row_number(),rank(),dense_rank(),NTILE(),PERCENT_RANK()等等。附上mysql8.0的下载地址:Download MySQL Installer

按照表occupations中列名Occupation 排序,这样保证每一个名字在职业一栏下面按照姓名字母顺序排序MySQL 排序,并保证底部数据记录栏对齐。输出的列名需要分别是Doctor, Professor, Singer, and Actor。注意:在没有人名与职业对应时,显示Null。

输入格式:

表occupations

mysql 根据条件排序_MySQL 排序_mysql field排序

职业一栏中只包括以下数值:Doctor, Professor, Singer和Actor

输入样式

mysql 根据条件排序_mysql field排序_MySQL 排序

输出格式

Jenny AshleyMeera Jane

Samantha Christeen Priya Julia

NULLKettyNULL Maria

其他解释:

第一列是按字母顺序排列的医生姓名列表。

第二列是按字母顺序排列的教授姓名列表。

第三列是按字母顺序排列的歌手姓名列表。

第四列是按字母顺序排列的演员姓名列表。

对于每个职业的名称数小于最大数目的列(在本例中是Professor和Actor列),空单元格数据填充空值。

代码:
drop table if exists  occupations;
create table occupations (Name varchar(255), Occupation varchar(255));
insert into occupations values ('A','Doctor'),('B','Actor'),('C','Singer'),('D','Professor'),
('E','Actor'),('M','Actor'),('J','Actor'),('H','Doctor'),('X','Doctor'),('Z','Professor'),
('F','Professor'),('I','Professor'),('G','Professor');
select min(Doctor)Doctor, min(Professor)Professor, min(Singer) Singer, min(Actor)Actor from
 (SELECT CASE WHEN Occupation = 'Doctor' THEN name END AS Doctor , 
CASE WHEN Occupation = 'Professor' THEN name END AS Professor , 
CASE WHEN Occupation = 'Singer' THEN name END AS Singer ,
 CASE WHEN Occupation = 'Actor' THEN name END AS Actor , 
RANK() OVER (PARTITION BY Occupation order by name) AS row_rank FROM Occupations
 ) OCCGroup group by row_rank 

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!