Процент MySQL (немного сложный?)

0

Есть несколько из них, но сегодня я либо замедлен, либо пытаюсь сделать что-то невозможное. У меня есть эта настройка

`id` int(11) NOT NULL AUTO_INCREMENT,
`score` float NOT NULL,
`userId` int(11) NOT NULL
`movieId` int(11) NOT NULL

Принимая это во внимание, я хочу получить процент от всех впечатлений от всех пользователей в данном фильме, как я смогу это сделать, поскольку пользователи могут оценивать их как "хорошие" с любым значением выше 0 и как "плохо" с любым значением ниже 0? Скажем, у данного фильма есть 4 опыта, где 3 - "2", а 1 - "-2". Я хотел бы вернуть "porcentage" из "подобия" этого фильма.

Я сошел с ума?

Теги:
aggregate-functions

2 ответа

0
Лучший ответ

Использование:

  SELECT x.movieid,
         x.score,
         COUNT(x.userid) / y.score_count  AS percentage
    FROM YOUR_TABLE x
    JOIN (SELECT t.movieid,
                 COUNT(t.score) AS score_count
            FROM YOUR_TABLE t
        GROUP BY t.movieid) y ON y.movieid = x.movieid
GROUP BY x.movieid, x.score
  • 0
    @ p.campbell: функция скрытых столбцов MySQL возвращает те же значения, что и ваши выходные данные.
  • 0
    хорошая вещь. Я все еще студент MySQL, очевидно :) Интересно, думаете ли вы, что эта функция - благо или проклятие?
Показать ещё 3 комментария
1

Это поможет вам начать работу. Я использовал TSQL с SQL Server, но если синтаксис не тот же (кажется, что CAST должен быть таким же в MySQL), просто дайте ему настройки, и вы пойдете в MySQL.

SELECT Score,
       (NumWithScore/(SELECT CAST(COUNT(userid) as decimal(10,2)) From Movies where MovieID= 7  ) * 100 
       )AS PercentageVotes
FROM 
(
     SELECT Score,           
            COUNT(*) AS NumWithScore          
     FROM  Movies AS M
     WHERE  MovieID = 7
     GROUP BY Score
) AS S

Данные, которые я использовал, были:

  • 2 элемента со значением 2
  • 1 элемент со значением -2

Результаты в:

Score | PercentageVotes
------+----------------
2.00  |   66.6666666
-2.0  |   33.3333333

Полный код в PasteBin.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню