Как я могу ранжировать весь столбец из таблицы при выборе подтаблицы с помощью sequelize? - PullRequest
0 голосов
/ 24 марта 2020

Я пытался найти способ использовать sequelize для возврата вложенной таблицы, используя предложение where, но применяется ли функция RANK () ко всей таблице? Ниже то, что я имею до сих пор. Функция ранга, однако, оценивает только то, что выбирается с помощью предложения where.

 if(username != null && username != "") {
    var userCollection = await models.user.findAll({
      where: {
        user_name: {
          [Op.like]: '%'+username+'%'
        }
      },
      attributes: [
        'user_id','user_name','points',
        [models.sequelize.literal('(DENSE_RANK() OVER ( ORDER BY points DESC))'), 'rank']
      ],
      limit: 50,
      offset: 0
    });  
  }

Так работает запрос sql. Возможно, есть лучший способ, но мне кажется, что он работает.

SELECT user_id, user_name, points, rank FROM
(select user_id, user_name, points, rank() over (order by points DESC) FROM users) as bar
WHERE bar.user_name = 'blah blah'
...