我有以下架构和数据,我想计算列“code_Frequency”的百分比。
我尝试了以下查询,但它给出了百分比1.00
,这绝对是错误的。我在这里做错了什么?
select code_frequency/sum(code_frequency) as percent,code_frequency
from image_colors where image_id =1
group by code_frequency
最佳答案
这里的问题是,您正在对 code_Frequency 进行分组,并且由于每个 code_Frequency 只有一行, sum() 将与 code_Frequency 值本身相同,因此得到的比率为 1
.
现在,在没有窗口函数的情况下(您有较旧版本的 MySQL),您必须在子查询(派生表)中单独计算 Sum,然后执行 Cross Join
返回主表获取百分比。
Select t.code_frequency/dt.sum_freq as percent, t.code_frequency
From image_colors as t
Cross Join
( Select SUM(code_frequency) as sum_freq
From image_colors
Where image_id = 1
) as dt
Where t.image_id = 1
关于MySQL:无法正确计算百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57815660/