У меня есть таблица с пользовательским вводом.Я хочу посчитать количество входов на пользователя, отсортировать их по количеству и затем найти номер строки.
Другими словами, я хочу найти ранг каждого пользователя на основе количества входов.
База данных находится в PostgreSQL 8.4.Кажется, не возникает никаких проблем с производительностью.Таблица содержит менее 1 000 000 строк.
Это дубликат этого вопроса.К сожалению, этот вопрос имеет -3 в качестве оценки и нет ответов.
Таблица с именем table1, столбец user_name имеет уникальных пользователей.
user_name | input
name1 txt input 1
name2 txt input 2
name1 txt input 3
name3 txt input 4
name1 txt input 5
name2 txt input 6
Мне нужен следующий запрос с одной дополнительной функцией:
WITH temp_table AS (
SELECT user_name, COUNT(*)
FROM table1
GROUP BY user_name
ORDER by count DESC )
SELECT name, row_number() OVER ( ) FROM temp_table;
OUtput:
user_name | row_number
name1 1
name2 2
name3 3
Как выбрать строку из этой таблицы, используяИмя пользователя?Я попробовал это:
WITH temp_table AS (
SELECT user_name, COUNT(*)
FROM table1
GROUP BY user_name
ORDER by count DESC )
SELECT name, row_number() OVER ( ) FROM temp_table
WHERE user_name = 'name2';
Выход всегда номер строки 1
user_name | row_number
name2 1
Я ожидал
user_name | row_number
name2 2