MySQL是否有一种很好的方式来复制SQL Server功能ROW_NUMBER()
?
例如:
SELECT
col1, col2,
ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col3 DESC) AS intRow
FROM Table1
Run Code Online (Sandbox Code Playgroud)
然后,我可以,例如,添加一个限制intRow
为1 的条件,以获得col3
每(col1, col2)
对最高的单行.
我需要找出客户的排名.在这里,我为我的要求添加了相应的ANSI标准SQL查询.请帮我转换为MySQL.
SELECT RANK() OVER (PARTITION BY Gender ORDER BY Age) AS [Partition by Gender],
FirstName,
Age,
Gender
FROM Person
Run Code Online (Sandbox Code Playgroud)
有没有找到MySQL排名的函数?
怎么做?
这个问题的前标题是" 在带有子查询的复杂查询中使用等级(@Rank:= @Rank + 1) - 它会起作用吗? "因为我正在寻找使用等级的解决方案,但现在我看到Bill发布的解决方案是好多了.
原始问题:
我正在尝试编写一个查询,该查询将根据定义的顺序从每个组获取最后一条记录:
SET @Rank=0;
select s.*
from (select GroupId, max(Rank) AS MaxRank
from (select GroupId, @Rank := @Rank + 1 AS Rank
from Table
order by OrderField
) as t
group by GroupId) as t
join (
select *, @Rank := @Rank + 1 AS Rank
from Table
order by OrderField
) as s
on t.GroupId = s.GroupId and t.MaxRank = s.Rank
order by OrderField
Run Code Online (Sandbox Code Playgroud)
表达式@Rank := @Rank + 1 …
给出以下数据框:
import pandas as pd
import numpy as np
df=pd.DataFrame({'A':['A','A','A','B','B','B'],
'B':['a','a','b','a','a','a'],
})
df
A B
0 A a
1 A a
2 A b
3 B a
4 B a
5 B a
Run Code Online (Sandbox Code Playgroud)
我想创建列'C',它在A和B列中对每组内的行进行编号,如下所示:
A B C
0 A a 1
1 A a 2
2 A b 1
3 B a 1
4 B a 2
5 B a 3
Run Code Online (Sandbox Code Playgroud)
到目前为止我试过这个:
df['C']=df.groupby(['A','B'])['B'].transform('rank')
Run Code Online (Sandbox Code Playgroud)
......但没有骰子!提前致谢!
我检测到一系列IP地址可能以恶意方式使用,我不知道如何阻止它.
我想通过使用.htaccess文件阻止访问我网站的范围66.249.74.*.
我有一个包含拍卖ID和出价的数据框.数据框按拍卖ID(升序)和出价(降序)排序:
Auction_ID Bid_Price
123 9
123 7
123 6
123 2
124 3
124 2
124 1
125 1
Run Code Online (Sandbox Code Playgroud)
我想添加一个名为"Auction_Rank"的列,按照出价对拍卖ID进行排名:
Auction_ID Bid_Price Auction_Rank
123 9 1
123 7 2
123 6 3
123 2 4
124 3 1
124 2 2
124 1 3
125 1 1
Run Code Online (Sandbox Code Playgroud) 我有一个表有一些列:用户,类别,价值
我想创建一个查询,根据值给出一个所有用户的排名,但重置该类别.
例:
user1 CategoryA 10
user2 CategoryA 11
user3 CategoryA 9
user4 CategoryB 3
user1 CategoryB 11
Run Code Online (Sandbox Code Playgroud)
查询将返回:
Rank User Category
1 user2 CategoryA
2 user1 CategoryA
3 user3 CategoryA
1 user1 CategoryB
2 user4 CategoryB
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我编写查询并指定类别,它工作但我必须编写循环,它非常慢.
我在hive中有下表
用户ID,用户名,用户地址,点击次数,展示次数,页面ID,页面名称
我需要通过每个页面的点击次数找到前5位用户[user-id,用户名,用户地址] [page-id,page-name]
我知道我们需要先按[page-id,page-name]进行分组,然后在每个组中我想通过[clicks,impressions] desc排序,然后只排出前5位用户[user-id,user-name,user-地址]为每个页面,但我发现很难构建查询.
我们怎么能用HIve UDF做到这一点?
我在MySQL中有一个非常大的测量数据表,我需要为这些值中的每一个计算百分等级.Oracle似乎有一个名为percent_rank的函数,但我找不到类似MySQL的东西.当然,我可以在Python中强制使用它,我仍然使用它来填充表格,但我怀疑这样做效率很低,因为一个样本可能有200,000个观察值.
我有一个mysql
表(scho_id
,school_name
,school_views
).
我正在寻找一个基于的学校的mysql
查询.rank
school_views
我在stackoverflow上找到了这个解决方案.
SET @points := -1, @num := 0;
SELECT scho_id
, school_views
, @num := if(@points = school_views, @num, @num + 1) as school_rank
, @points := school_info.school_views as dummy
FROM school_info
ORDER BY school_views desc, scho_id asc;
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题,但我注意到:=
这个查询中有一个新的运算符.我很想知道这个运算符的含义和用法.
rank ×10
mysql ×5
sql ×3
group-by ×2
pandas ×2
.htaccess ×1
block ×1
colon-equals ×1
dataframe ×1
file ×1
hive ×1
ip ×1
operators ×1
percentile ×1
python-3.x ×1
row-number ×1
sql-server ×1
subquery ×1
t-sql ×1