Задать вопрос
Nightmare1
@Nightmare1
Программист

Как получить порядковый номер в отсортированной таблице топов пользователей?

Как получить порядковый номер записи в отсортированной таблице топов пользователей?
self.cursor.execute(f"""
            SELECT
                ROW_NUMBER() OVER (ORDER BY количествоБуквСообщений DESC) AS row_num, вкИдПользователя
            FROM
                ТОПЫ_{айдиГруппы}
            where
                вкИдПользователя = {айдиПользователя} """)
этот код всегда выводит единицу когда
Топ
 Страница 1/1 Рейтинг в группе  

Количество сообщений | Количество букв
0001.   @id860862230 - 117 | 1068
0002. ✨  @id284574337 - 3 | 31
0003.   @id1057274875 - 4 | 20
0004. @id817637090 - 2 | 0
0005. @id32483757 - 1 | 0

Ваша позиция в топе 32483757 1


позиция в топе должна быть 5 а не 1, как исправить? Код выше всегда возвращает единицу
  • Вопрос задан
  • 78 просмотров
Подписаться 1 Простой 6 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    SQL для разработки
    4 месяца
    Далее
  • Нетология
    Продвинутый SQL
    5 недель
    Далее
  • Академия Eduson
    SQL-разработчик: тариф Базовый
    3 месяца
    Далее
Решения вопроса 1
Nightmare1
@Nightmare1 Автор вопроса
Программист
В ручную отсортировал
def получитьНомерПозицииВТопе(self, айдиПользователя: int, айдиГруппы: int) -> int:
        # self.cursor.execute(f"""
        #     SELECT
        #         ROW_NUMBER() OVER (ORDER BY количествоБуквСообщений DESC) AS row_num, вкИдПользователя
        #     FROM
        #         ТОПЫ_{айдиГруппы}
        #     where
        #         вкИдПользователя = {айдиПользователя} """)
        #
        # return self.cursor.fetchone()[0]

        self.cursor.execute(f"SELECT * from ТОПЫ_{айдиГруппы}")

        строки = self.cursor.fetchall()

        строки.sort(key = lambda tup: tup[3], reverse=True)

        for i, tup in enumerate(строки):
            if tup[1] == айдиПользователя: return i+1

        return None
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Екатеринбург
от 50 000 до 90 000 ₽