加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

MySQL 以及 Python 达成排名窗口函数

发布时间:2021-11-20 15:00:37 所属栏目:教程 来源:互联网
导读:这里,我用MySQL 以及Python 分别实现了rank 窗口函数。 原始表信息: t_girl=# d group_concat; Table ytt.group_concat Column | Type | Modifiers ----------+-----------------------+----------- rank | integer | username | character varying(20) |

这里,我用MySQL 以及Python 分别实现了rank 窗口函数。
 
原始表信息:
 
t_girl=# d group_concat;
          Table "ytt.group_concat"
  Column  |        Type          | Modifiers
----------+-----------------------+-----------
 rank    | integer              |
 username | character varying(20) |
 
表数据
 
t_girl=# select * from group_concat;
 rank | username
------+----------
  100 | Lucy
  127 | Lucy
  146 | Lucy
  137 | Lucy
  104 | Lucy
  121 | Lucy
  136 | Lily
  100 | Lily
  100 | Lily
  105 | Lily
  136 | Lily
  149 | ytt
  116 | ytt
  116 | ytt
  149 | ytt
  106 | ytt
  117 | ytt
(17 rows)
 
 
Time: 0.638 ms
 
PostgreSQL 的rank 窗口函数示例:
 
t_girl=# select username,rank,rank() over(partition by username order by rank desc) as rank_cnt from group_concat;         
 username | rank | rank_cnt
----------+------+----------
 Lily    |  136 |        1
 Lily    |  136 |        1
 Lily    |  105 |        3
 Lily    |  100 |        4
 Lily    |  100 |        4
 Lucy    |  146 |        1
 Lucy    |  137 |        2
 Lucy    |  127 |        3
 Lucy    |  121 |        4
 Lucy    |  104 |        5
 Lucy    |  100 |        6
 ytt      |  149 |        1
 ytt      |  149 |        1
 ytt      |  117 |        3
 ytt      |  116 |        4
 ytt      |  116 |        4
 ytt      |  106 |        6
(17 rows)
 
 
Time: 131.150 ms
 
MySQL 提供了group_concat 聚合函数可以变相的实现:
 
mysql>
select a.username, a.rank, find_in_set(a.rank,b.rank_gp) as rank_cnt
from group_concat as a ,
(select username,group_concat(rank order by rank desc separator ',')  as rank_gp from group_concat group by username
) b
where a.username = b.username order by a.username asc,a.rank desc;
+----------+------+----------+
| username | rank | rank_cnt |
+----------+------+----------+
| Lily    |  136 |        1 |
| Lily    |  136 |        1 |
| Lily    |  105 |        3 |
| Lily    |  100 |        4 |
| Lily    |  100 |        4 |
| Lucy    |  146 |        1 |
| Lucy    |  137 |        2 |
| Lucy    |  127 |        3 |
| Lucy    |  121 |        4 |
| Lucy    |  104 |        5 |
| Lucy    |  100 |        6 |
| ytt      |  149 |        1 |
| ytt      |  149 |        1 |
| ytt      |  117 |        3 |
| ytt      |  116 |        4 |
| ytt      |  116 |        4 |
| ytt      |  106 |        6 |
+----------+------+----------+
17 rows in set (0.02 sec)

(编辑:PHP编程网 - 黄冈站长网)

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

    热点阅读