如何计算得分高于[userID]的用户数量?

时间:2017-01-12 11:07:22

标签: postgresql typescript sequelize.js

我有以下SQL代码,它返回分数高于特定条目的条目数。

select (select count(*)
    from entries e2
    where e1.score < e2.score) + 1 as pos
from entries e1
where e1.ID = 36;

我在将此翻译成Sequelize.js时遇到了很多麻烦。我有一个解决方案可以在2个查询中实现这一点,但我想在一个查询中完成。

this.dal.Entries.getPositionInList = (ID: number) => {
  return this.db.Entries.findOne({
    where: {
      ID: ID
    }
  }).then((entry: any) => {
    return this.db.Entries.findAndCountAll({
      where: {
        score: {
          $gt: entry.score
        }
      }
    });
  });
};

1 个答案:

答案 0 :(得分:1)

您的查询可以通过多种方式表达。也许有一个你可以转换成一些续集代码? (我不知道,我只希望以下内容有帮助):

SELECT COUNT(*)
FROM entries
WHERE score >= (SELECT score FROM entries WHERE id = 36);


SELECT COUNT(*) OVER (ORDER BY score DESC)
FROM entries
ORDER BY id <> 36
LIMIT 1;


SELECT COUNT(*)
FROM entries s1
LEFT JOIN entries s2 ON s2.score >= s1.score
WHERE s1.id = 36;