Я пытался найти способ использовать 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'