首页 > 解决方案 > 协助 SQL Server 中的百分比计算

问题描述

数据库管理系统: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;

这是我的第一个查询的结果:

结果图片

标签: sqlsql-server

解决方案


SQL Server 进行整数除法,而0/1不是. 一个简单的解决方案是:00.5

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

.0值从整数更改为十进制数 - 并且除法更直观。


推荐阅读