标签: rank

MySQL - where 子句中的排名函数

我想在我的 MySQL 查询中使用排名函数。我使用了 MySQL 中 Rank 函数的建议

我只想选择排名最高的一行。我的查询看起来像:

SELECT c1, c2, c3, @curRank := @curRank + 1 AS rank 
FROM tab1 t, (SELECT @curRank := 0) r 
WHERE t.c5 = 'asd' AND t.c6 = 'qwe' AND rank = 1 
ORDER BY t.c8 DESC
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR 1054 (42S22): Unknown column 'rank' in 'where clause'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我该如何解决我的查询?

mysql sql rank

1
推荐指数
1
解决办法
3617
查看次数

从数据帧中按组查找最高十分位数

我试图使用函数创建新变量,lapply而不是使用循环在数据中正常工作.我曾经使用Stata,并且会用类似于此处讨论的方法解决这个问题.

由于在R中以编程方式命名变量是如此困难或至少是尴尬(并且似乎你不能使用索引assign),我已经将命名过程留到了之后lapply.然后我使用for循环在合并之前进行重命名,然后再用于合并.有更有效的方法吗?我该如何更换循环?我应该做某种重塑吗?

#Reproducible data
data <- data.frame("custID" = c(1:10, 1:20),
    "v1" = rep(c("A", "B"), c(10,20)), 
    "v2" = c(30:21, 20:19, 1:3, 20:6), stringsAsFactors = TRUE)

#Function to analyze customer distribution for each category (v1)
pf <- function(cat, df) {

        df <- df[df$v1 == cat,]
        df <- df[order(-df$v2),]

    #Divide the customers into top percents
    nr <- nrow(df)
    p10 <- round(nr * .10, 0)
    cat("Number of people in the Top 10% :", p10, …
Run Code Online (Sandbox Code Playgroud)

r rank quantile dataframe split-apply-combine

1
推荐指数
2
解决办法
844
查看次数

为 double 向量创建排名

我有一个带有双精度的向量,我想对其进行排名(实际上它是一个带有带有名为 的双精度成员的对象的向量costs)。如果只有唯一值或者我忽略非唯一值,那么就没有问题。但是,我想对非唯一值使用平均排名。此外,我在 SO 上发现了一些关于排名的问题,但是他们忽略了非唯一值。

例如,假设我们有 (1, 5, 4, 5, 5),那么相应的排名应该是 (1, 4, 2, 4, 4)。当我们忽略非唯一值时,排名为 (1, 3, 2, 4, 5)。

当忽略非唯一值时,我使用了以下内容:

void Population::create_ranks_costs(vector<Solution> &pop)
{
  size_t const n = pop.size();

  // Create an index vector
  vector<size_t> index(n);
  iota(begin(index), end(index), 0);

  sort(begin(index), end(index), 
       [&pop] (size_t idx, size_t idy) { 
         return pop[idx].costs() < pop[idy].costs();
       });

  // Store the result in the corresponding solutions
  for (size_t idx = 0; idx < n; ++idx)
    pop[index[idx]].set_rank_costs(idx + 1);
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何考虑非唯一值?我更喜欢使用,std::algorithm因为在我看来,这会带来干净的代码。

c++ algorithm rank c++11

1
推荐指数
1
解决办法
1193
查看次数

别名无法在 where 子句中使用

create table tab1(sno int, name varchar(30), age int);

insert into tab1 values(1, 'abc1', 22);
insert into tab1 values(2, 'abc2', 23);
insert into tab1 values(3, 'xyz', 28);
insert into tab1 values(4, 'abc3', 26);
insert into tab1 values(5, 'abc4', 25);

select sno, name, age, rank() over (order by sno) as ranking from tab1 where
ranking = trunc((select count(*)/2 from tab1)) + 1; //This query is giving error
Run Code Online (Sandbox Code Playgroud)

错误是 ORA-00904: "RANKING": 无效标识符

sql oracle rank

1
推荐指数
1
解决办法
3058
查看次数

单独使用 PHP 的完美排名

在我试图找到带有关系的完美排名解决方案时,我一直坚持给出正确的排名。代码将解释我想要更好地实现的目标:

我有以下数组:

$standings = array(
    'player_1' => 30,
    'player_2' => 26,
    'player_3' => 28,
    'player_9' => 28
);
Run Code Online (Sandbox Code Playgroud)

现在为了用关系对它进行排名,我有以下功能:

function setRanking($standings) {
    $rankings = array();
    arsort($standings);
    $rank = 1;
    $tie_rank = 0;
    $prev_score = -1;
    foreach ($standings as $name => $score) {
        if ($score != $prev_score) {  //this score is not a tie
            $count = 0;
            $prev_score = $score; 
            $rankings[$name] = array('score' => $score, 'rank' => $rank);
        } else { //this score is a tie
            $prev_score = $score;
            if ($count++ …
Run Code Online (Sandbox Code Playgroud)

php arrays ranking rank

1
推荐指数
1
解决办法
415
查看次数

R - 按等级提取值

假设我有一个我根据Value列订购的数据框,现在看起来像这样:

Name  Value
A       2
B       2
C       5
D       5
E      10
F      12
Run Code Online (Sandbox Code Playgroud)

我正在写一个函数,其中一个参数是一个等级(例如rank = 2),我希望输出是相应的名称(例如C&D).任何关系都应该平等排名.

我真的很感激任何指导,因为我已经尝试了多种方法来实现这一点,并继续得到某种错误.

r function rank

1
推荐指数
1
解决办法
97
查看次数

将 RANK 插入 SQL 表

我有一个包含以下列的表:

NAME (VARCHAR) 
FISHING (INT) 
SAILING (INT) 
NAVIGATION (INT) 
SALARY (NUMERIC) 
Run Code Online (Sandbox Code Playgroud)

该表有9行数据。我曾经ALTER添加一列来保存rank该人的工资。它被称为SALARY_RANK。我的想法是用一个SELECT可以填补该排名的声明来填充该列。我尝试使用INSERT以下SELECT语句来填充该列,但最终创建了 9 个新行,其中除新列之外的所有行都是NULL

解决这个问题的最佳方法是什么?

这是我为新列编写的 SQL:

ALTER TABLE #CODY_CREW 
ADD  SALARY_RANK INT;

INSERT INTO #CODY_CREW (SALARY_RANK)
    SELECT 
       DENSE_RANK() OVER (ORDER BY SALARY) AS 'SALARY_RANK'
    FROM #CODY_CREW
Run Code Online (Sandbox Code Playgroud)

这就是我运行时发生的情况:

NAME                                               FISHING     SAILING     NAVIGATION  SALARY                                  SALARY_RANK
-------------------------------------------------- ----------- ----------- ----------- --------------------------------------- -----------
Amy                                                3           5           1           46000                                   NULL
Bill                                               1           2           5           43000                                   NULL
Carl                                               3           4           2 …
Run Code Online (Sandbox Code Playgroud)

sql sql-server rank dense-rank

1
推荐指数
1
解决办法
2295
查看次数

Discord.js 如何编辑之前的机器人消息?

所以我正在尝试制作一个 ROSTER 命令。命令是$roster add/remove @user RANK。该命令基本上应该编辑以前的机器人的消息(名册)并将用户添加到名册中的命令中的排名...这是我到目前为止的代码,但我还没有设法制作名册消息和编辑部分它和排名系统。如果有人可以提供帮助,那就太棒了!

//ROOSTER COMMAND
client.on('message', async message => {
    if (message.content.startsWith(prefix + "roster")) {
        if (!message.member.hasPermission('ADMINISTRATOR')) return message.channel.send('You do not have that permission! :x:').then(message.react(':x:'))

        const args = message.content.slice(prefix.length + 7).split(/ +/)
        let uReply = args[0];
        const user = message.mentions.members.first()

        if(!uReply) message.channel.send("Please use `add` or `remove`.")
        if(uReply === 'add')  {
            if(!user) return message.channel.send("Please make sure to provide which user you would like to add...")
            message.channel.send(`you are adding **${user.displayName}** from the roster.`)
           
        } else if(uReply === …
Run Code Online (Sandbox Code Playgroud)

rank discord.js

1
推荐指数
1
解决办法
3万
查看次数

如何在MySQL数据库中创建一个简单的粘性位置文章列表,只需一个查询即可检索?

我有一个分页的文章列表需要按排名排序,但当文章的位置<> 0时,它必须插入该特定位置.我认为我至少可以为当前页面提取正确位置的文章,然后在PHP中对它们进行排序,以便在适当的位置显示.我想在MySQL中只用一个查询来做这个

我的一些尝试是:

此查询首先尝试选择具有当前页面正确位置的文章,然后选择排名最高的文章

SELECT id, rank_score, position
FROM Articles
ORDER BY ((position <= (50 * 1)) AND (position > 50 * (1-1))) DESC, rank_score DESC
LIMIT 0, 50
Run Code Online (Sandbox Code Playgroud)

50是页面上显示的文章数,1是当前页码,它们是在查询生成时添加的.

此查询的问题在于,第2页上的结果是错误的,因为通过添加LIMIT 50,50,您可以超越在该页面上具有位置的文章.

另一种尝试:

SELECT (
    SELECT id, rank_score, position
      FROM Articles
  ORDER BY ((position <= (50 * 1)) AND (position > 50 * (1-1))) DESC, rank_score DESC  
     LIMIT 50)
UNION (
  SELECT id, rank_score, position
    FROM Articles
 ORDER BY rank_score DESC LIMIT x)
Run Code Online (Sandbox Code Playgroud)

要正常工作,第二个查询的限制必须等于第一个查询返回的行数.此外,任何时候一个具有非常高的排名,但也是非常高的位置的文章,它将在前面显示,因为在第二个查询中忽略了位置.

mysql sql position rank

0
推荐指数
1
解决办法
691
查看次数

简单的等级公式

我正在寻找一个数学排名公式.

样品是

    2008    2009    2010
A   5       6       4
B   6       7       5
C   7       8       2
Run Code Online (Sandbox Code Playgroud)

我想为每个期间代码字段添加一个排名列

                            rank
    2008    2009    2010    2008    2009    2010
B   6       7       5       2       1       1
A   5       6       4       3       2       2
C   7       2       2       1       3       3
Run Code Online (Sandbox Code Playgroud)

请不要使用循环遍历行和列的方法进行回复,随着时间的推移递增排名值,这很容易.我正在寻找一个公式,就像找到总百分比(项目/总数)一样.我知道我以前见过这个,但是很难找到它.

提前致谢!

math formula rank

0
推荐指数
1
解决办法
2067
查看次数