Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите написать запрос / 2 сообщений из 2, страница 1 из 1
26.07.2021, 20:28
    #40086339
dimka0074
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
Имеется следующая база данных


Мне необходимо получить пользователей, отсортированных по убыванию рейтинга (рейтинг пользователя – средний рейтинг созданного им контента).

Я написал следующий запрос, но он отрабатывает некорректно

SELECT "Users"."UserId", "Users"."Email", AVG(COALESCE("Ratings"."Evaluation", 0)) As AvgRating
FROM "Users"
LEFT JOIN "Contents"
ON "Users"."UserId" = "Contents"."UserId"
LEFT JOIN "Ratings"
ON "Ratings"."ContentId" = "Contents"."ContentId"
GROUP BY "Users"."UserId"
...
Рейтинг: 0 / 0
27.07.2021, 17:01
    #40086511
DSKalugin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите написать запрос
dimka0074,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SELECT "Users"."UserId", "Users"."Email", AVG(COALESCE("Ratings"."Evaluation", 0)) As AvgRating
FROM "Users"
LEFT JOIN "Contents"
ON "Users"."UserId" = "Contents"."UserId" -- там нет поля UserId, есть AuthorId
LEFT JOIN "Ratings"
ON "Ratings"."ContentId" = "Contents"."ContentId"
GROUP BY "Users"."UserId"


как-то так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT U."UserId", U."Email", CR."AvgRating"
FROM "Users" U
LEFT JOIN (
  SELECT C."AuthorId", AVG(R."Evaluation") as "AvgRating"
  from "Contents" C 
  join "Ratings" R ON R."UserId" = C."AuthorId" and R."ContentId" = C."ContentId"
  GROUP BY C."AuthorId"
) CR on CR."AuthorId" = U."UserId"
ORDER BY CR."AvgRating" DESC
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите написать запрос / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]