SELECT命令用于计算百分比

Bea*_*ned 2 mysql sql sum count

我正在尝试根据其对所有其他视频的查看次数来获取我的数据库中每个视频的百分比.

然后我尝试将最高视图数量的所有视频显示到最低,在一个漂亮的HTML页面中显示其百分比.

显然百分比范围从0到100%(而不是超过),最流行的视频可能会有100%我假设..

我在数据库中有大约3,400个视频.我的尝试是可笑的,现在已经刮了我好几天了..

我的表看起来与此类似.

video_public
id | video_title | video_views
Run Code Online (Sandbox Code Playgroud)

尝试:

SELECT 
   id, 
   video_views * 100 / (SELECT COUNT(*) FROM video_public)
FROM `video_public` stat
Run Code Online (Sandbox Code Playgroud)

说实话,我甚至不知道这个SQL查询是否正确.

我还没有考虑到视频的观看次数所有的视频观看次数总视频 ..

真的卡住..

Lar*_*tig 6

好的,基于您的问题的澄清:

您想为数据库中的每个视频计算(video_views*100)/(largest_views_for_any_single_video).

分子很简单,它只是video_views列.分母是

SELECT MAX(video_views) FROM video_public
Run Code Online (Sandbox Code Playgroud)

所以,把它放在一起,你得到:

SELECT video_title, ((video_views * 100) / (SELECT MAX(video_views) 
FROM video_public)) FROM video_public
Run Code Online (Sandbox Code Playgroud)

对于观看次数最多的视频,这应该产生100,对于其他视频,这应该产生较低的百分比,对于任何从未观看过的视频,都应该减少到0.


pea*_*dog 5

要修改sheepsimulator建议的内容,您可以尝试:

SELECT 
    id, 
    video_title, 
    video_views, 
    (select sum(video_views) from video_public)) as TotalViews,
    ((100 * video_views)/(select sum(video_views) from video_public)) as PercentOfViews
FROM 
    video_public 
order by 
    video_views.
Run Code Online (Sandbox Code Playgroud)

当然,改变排序以满足您的口味.