Postgresql group by for many columns
Imagine there is a row in "Movie" where id is 42.

Then imagine that there are two rows in "UserMovieWatchProgress" where "movieID" is 42.

Then the result of

"Movie" LEFT JOIN "UserMovieWatchProgress"
   ON "UserMovieWatchProgress"."movieID" = "Movie"."id" 


would be something like

 "Movie".id | "UserMovieWatchProgress"."movieID"
------------+------------------------------------
         42 |                                143
         42 |                                 93


Now consider the following query:

SELECT "Movie".id,
       "UserMovieWatchProgress"."movieID"
FROM "Movie"
   LEFT JOIN "UserMovieWatchProgress"
      ON "UserMovieWatchProgress"."movieID" = "Movie"."id"
GROUP BY "Movie".id;


By definition of GROUP BY, there can be only one result row per "Movie".id.
Which number should we take for "UserMovieWatchProgress"."movieID"? That is unclear and not well defined, so this is forbidden by the SQL standard.

Now if PostgreSQL can deduce that there can be only one possible "UserMovieWatchProgress"."movieID", it will allow you to omit the column from the GROUP BY clause.



If you just want any of the "UserMovieWatchProgress"."movieID" in the query result, and you don't care which one, you can do the following in PostgreSQL:

SELECT DISTINCT ON ("Movie".id)
       "Movie".id,
       "UserMovieWatchProgress"."movieID"
FROM "Movie"
   LEFT JOIN "UserMovieWatchProgress"
      ON "UserMovieWatchProgress"."movieID" = "Movie"."id";


Perhaps that is what you are looking for.