Помощь в расчете процентов на SQL сервере - PullRequest
1 голос
/ 25 мая 2020

СУБД: SQL Сервер

Я пытаюсь рассчитать процент того, сколько раз определенный язык используется для субтитров, для этого я попытался получить, сколько раз язык используется из моей базы данных

Расчет, который я пытаюсь сделать: languagesusedforsubtitles / totalamountofsubtitlesused * 100

Я предполагаю, что во время моего оператора SELECT мне нужно или получить значения другим способом, но я не могу выяснить, как.

Это мой пока «рабочий» запрос, который показывает, сколько раз один язык используется для субтитров:

-- Sorted language count / total used languages * 100
SELECT DISTINCT [language].name AS "Taal", COUNT(*) AS "Percentage"
FROM [profile]
INNER JOIN [watched_media] ON [watched_media].profileid = [profile].profile_ID
INNER JOIN subtitles ON [watched_media].subtitlesid = [subtitles].subtitles_ID
INNER JOIN language ON [language].language_ID = [subtitles].languageid
GROUP BY [language].name;

И это то, что я пробовал в первую очередь но в результате появляется только 0:

SELECT DISTINCT [language].name AS "Taal", COUNT(*) / (SELECT COUNT(watched_media_ID) FROM [watched_media]) * 100 AS "Hoevaak gebruikt"
FROM [profile]
INNER JOIN [watched_media] ON [watched_media].profileid = [profile].profile_ID
INNER JOIN subtitles ON [watched_media].subtitlesid = [subtitles].subtitles_ID
INNER JOIN language ON [language].language_ID = [subtitles].languageid
GROUP BY [language].name;

Вот результаты моего первого запроса:

Results image

1 Ответ

2 голосов
/ 25 мая 2020

SQL Сервер выполняет целочисленное деление, поэтому 0/1 равно 0, а не 0.5. Простое решение для вас:

COUNT(*) * 100.0 / (SELECT COUNT(watched_media_ID) FROM [watched_media]

.0 изменяет значение с целого на десятичное - и деление работает более интуитивно.

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