powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите написать запрос
2 сообщений из 2, страница 1 из 1
Помогите написать запрос
    #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
Помогите написать запрос
    #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
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Помогите написать запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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