Возвращаемый столбец отсортирован по 2 другим столбцам с условием - PullRequest
0 голосов
/ 18 мая 2018

У меня есть БД, которая представляет собой просто таблицу с 3 столбцами: viewer_id, movie_id, Рейтинг (INTEGER) (INTEGER) (TEXT)

Где строка в этой таблице представляет этоопределенный зритель посмотрел определенный фильм.

Если зритель еще не оценил фильм - значение рейтинга равно NULL.

Если зритель оценил фильм, чемЗначение рейтинга: LIKE \ DISLIKE

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

Пока что я написал запрос, который возвращает таблицу с viewer_id, movie_watch_count с правильной информацией.

   SELECT viewer_id , count(*) AS movies_watched 
   FROM viewers_movies_rankings  
   Group By viewer_id 

Я попытался добавить еще один столбец в эту таблицу - "Ranking_count", который будет считатьдля каждого viewer_id количество строк, где значение ранжирования! = ноль.(Так что я также получу количество фильмов, которые оценил зритель, так что единственное, что после этого нужно сделать, это отсортировать по этим столбцам)

, но все, что я написал, не сработало.Например (не работает)

SELECT viewer_id , count(*) AS movies_watched,
COUNT(*) AS movies_watched 
HAVING ranking != null 
FROM viewers_movies_rankings  
Group By viewer_id 

Вы можете мне помочь?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Это то, что вам нужно?

SELECT
    viewer_id,
    COUNT(*) AS movies_watched,
    COUNT(ranking) AS ranking_count
FROM viewers_movies_rankings
GROUP BY viewer_id

Поведение функции COUNT по умолчанию состоит в том, что она учитывает только значения, отличные от NULL.

0 голосов
/ 18 мая 2018

Может показаться, что вам нужно:

SELECT viewer_id , count(*) AS movies_watched,
       COUNT(ranking) as movies_ranked
FROM viewers_movies_rankings  
GROUP BY viewer_id ;

COUNT(<expression>) считает количество раз, когда выражение не NULL - и это именно то, что вы хотите сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...