我正在使用此查询根据他们获得的投票为每个名称分配排名,但它返回错误:
1248 - 每个派生表必须有自己的别名
这是我的代码:
SELECT @rownum:=@rownum+1 AS rank, name, vote
FROM table, (SELECT @rownum:=0) ORDER BY vote DESC
Run Code Online (Sandbox Code Playgroud)
在将查询修改为: -
SELECT @rownum:=@rownum+1 AS rank, name, vote
FROM table ORDER BY vote DESC
Run Code Online (Sandbox Code Playgroud)
我得到的查询排名为NULL.任何帮助,如何获得第一名的排名?
注意:我不是在寻找任何替代解决方案.只是尝试在查询本身中执行此操作.
我正在尝试编写一个程序,其中我希望可分配数组的A等级为 1、2 或 3,具体取决于我在运行时的输入。我想这样做,因为后续操作A是相似的,并且我在模块中定义了一个work带有模块过程的接口,当执行该模块过程时A,会给出所需的结果。
我目前正在做的是这样的:
program main
implicit none
integer :: rank,n=10
real*8, allocatable :: A1(:)
real*8, allocatable :: A2(:,:)
read (*,*) rank
if (rank.eq.1) then
allocate (A1(n))
else if (rank.eq.2) then
allocate (A2(n,n))
end if
! operate on the array
if (rank.eq.1) then
call work(A1)
else if (rank.eq.2) then
call work(A2)
end if
end program
Run Code Online (Sandbox Code Playgroud)
如果我可以选择 的等级A,事情会容易得多,因为这样就if不需要这些陈述了。也许这是不可能的,但感谢所有帮助。
我有一个包含 142 个数据条目的数据集:121 个人在两次测量(两年,治疗前后,年份 = 0 或 1),在第二年 46 个人在处理地块中,其余的在控制地块中(处理= 0 或 1)。以下是一些示例数据:
ID <- c("480", "480", "620", "620","712","712")
Year <- c("0", "1", "0", "1","0", "1")
Plot <- c("14", "14", "13", "13","20","20")
Treat <- c("0", "0", "0", "1", "0", "1")
Exp <- c("31", "43", "44", "36", "29", "71")
ExpSqrt <- c("5.567764", "6.557439", "6.633250", "6.000000", "5.385165", "8.426150")
Winter <- data.frame(ID, Year, Plot, Treat,
Exp, ExpSqrt,
stringsAsFactors = TRUE)
Run Code Online (Sandbox Code Playgroud)
情节和个人是随机因素,我试图拟合一个混合模型来确定年份、治疗和它们之间的相互作用的影响:
model_Exp <- lmer(ExpSqrt~Year+Treat+Year*Treat+(1|ID)+(1|Plot),data=Winter)
Run Code Online (Sandbox Code Playgroud)
但我不断收到警告信息:
"fixed-effect model matrix is rank deficient so dropping …Run Code Online (Sandbox Code Playgroud) 我有一个SQL服务器表,我试图获取一个计算列 - MyPartition - 指示基于变量@segment的分区数.例如,如果@segment = 3,则以下输出为真.
RowID | RowName | MyPartition
------ | -----------| -------
1 | My Prod 1 | 1
2 | My Prod 2 | 1
3 | My Prod 3 | 1
4 | My Prod 4 | 2
5 | My Prod 5 | 2
6 | My Prod 6 | 2
7 | My Prod 7 | 3
8 | My Prod 8 | 3
9 | My Prod 9 | 3
10 …Run Code Online (Sandbox Code Playgroud) 我有一个按州分组并汇总到总收入的数据框,其中忽略了部门和名称。我现在想分解基础数据集,以按特定顺序按收入显示状态、部门、名称和前 2 个(我从以前的数据框中创建了一个索引,该索引按特定顺序列出了状态)。使用下面的示例,我想使用我的排序索引(肯塔基州、加利福尼亚州、纽约州),该索引仅列出每个州的前两个结果(按收入先前规定的顺序): 数据集:
State Sector Name Revenue
California 1 Tom 10
California 2 Harry 20
California 3 Roger 30
California 2 Jim 40
Kentucky 2 Bob 15
Kentucky 1 Roger 25
Kentucky 3 Jill 45
New York 1 Sally 50
New York 3 Harry 15
Run Code Online (Sandbox Code Playgroud)
最终目标数据框:
State Sector Name Revenue
Kentucky 3 Jill 45
Kentucky 1 Roger 25
California 2 Jim 40
California 3 Roger 30
New York 1 Sally 50
New York 3 Harry 15
Run Code Online (Sandbox Code Playgroud) 我遇到了日期时间排名的问题。可以说我有下表。
ID TIME
01 2018-07-11 11:12:20
01 2018-07-12 12:00:23
01 2018-07-13 12:00:00
02 2019-09-11 11:00:00
02 2019-09-12 12:00:00
Run Code Online (Sandbox Code Playgroud)
我想添加另一列以按时间为每个 ID 和组对表进行排名。我用了
df['RANK'] = data.groupby('ID')['TIME'].rank(ascending=True)
Run Code Online (Sandbox Code Playgroud)
但得到一个错误:
'NoneType' object is not callable
Run Code Online (Sandbox Code Playgroud)
如果我将日期时间替换为数字,它会起作用......任何解决方案?
让我们采用一列具有随机值的数据帧。我想获得所有这些值的排名,这很容易通过执行以下操作:
df.rank()
Run Code Online (Sandbox Code Playgroud)
但如果存在重复的值,您的排名也会得到重复的值。例如,对于给定的数字列表:
[127.0, 131.856, 132.88, 126.249, 128.417, 124.336, 131.856, 130.624, 147.906, 134.412, 130.735, 133.433, nan, 125.59, 130.211, 133.847, 137.431, 130.0, 127.4, 132.226, 138.134]
Run Code Online (Sandbox Code Playgroud)
排名函数的输出将是:
[4.0, 11.5, 14.0, 3.0, 6.0, 1.0, 11.5, 8.0, 20.0, 17.0, 9.0, 15.0, nan, 2.0, 7.0, 16.0, 18.0, 10.0, 5.0, 13.0, 19.0]
Run Code Online (Sandbox Code Playgroud)
如您所见,位置 1 和 6 是相同的,完整列表中没有 11 或 12。 即使哪个数字排在第一位是任意的,我们如何才能获得这些数字的排名?
我试图获得前 3 个不同的分数(公式结果)以及获得这些(3 个最高)分数的分析师的姓名。我试过使用 RANK、SORT、LARGE 并且都给了我奇怪的结果。
这就是我要的结果。请注意,每个分数的分析师数量各不相同。
这是我使用 RANK 得到的结果。
这是我使用 SORT 得到的结果。
这是我使用 LARGE 得到的结果
我不确定我做错了什么。也许我使用了错误的功能,所以如果有人能指出我正确的方向,我将不胜感激。
我对系列的排名感到困惑。我知道排名是从系列中的最高值到最低值计算的。如果两个数字相等,则 pandas 计算数字的平均值。
在此示例中,最高值为 7。为什么我们对数字 7 的排名为 5.5,对数字 4 的排名为 1.5?
S1 = pd.Series([7,6,7,5,4,4])
S1.rank()
Output:
0 5.5
1 4.0
2 5.5
3 3.0
4 1.5
5 1.5
dtype: float64
Run Code Online (Sandbox Code Playgroud) 我正在尝试设置学习以进行排名lightgbm,我有以下数据集,其中包含基于查询的用户交互:
df = pd.DataFrame({'QueryID': [1, 1, 1, 2, 2, 2],
'ItemID': [1, 2, 3, 1, 2, 3],
'Position': [1, 2 , 3, 1, 2, 3],
'Interaction': ['CLICK', 'VIEW', 'BOOK', 'BOOK', 'CLICK', 'VIEW']})
Run Code Online (Sandbox Code Playgroud)
问题是正确设置训练数据集?文档提到使用,Dataset.set_group()但不太清楚如何使用。
rank ×10
python ×5
pandas ×4
arrays ×1
date ×1
excel ×1
fortran ×1
lightgbm ×1
lme4 ×1
mixed-models ×1
mysql ×1
partition-by ×1
r ×1
row-number ×1
sorting ×1
sql ×1
sql-server ×1
t-sql ×1