MySQL:无法正确计算百分比

标签 mysql

我有以下架构和数据,我想计算列“code_Frequency”的百分比。

enter image description here

我尝试了以下查询,但它给出了百分比1.00,这绝对是错误的。我在这里做错了什么?

select code_frequency/sum(code_frequency) as percent,code_frequency
from image_colors where image_id =1
group by code_frequency

enter image description here

最佳答案

这里的问题是,您正在对 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/

相关文章:

php - SQLSTATE[23000] : Integrity constraint violation: 1048 Column 'profile_percentage' cannot be null on doctrine

mysql - 当值不是日期时,CASE 计数值

具有不同文本和值的 JavaScript 动态下拉列表形成 php json

mysql - 如何在 Google App 脚本中使用 SUBSTRING?

mysql - Node.js MySQL 连接未连接但未显示错误

mysql - 不精确搜索最近的时间值

php - 条件计数 MySQL

mysql - 使用表 B 中的所有新条目更新表 A,并通过 B 更新 A 中的现有条目

MySQL 解释 - 需要索引建议/反馈

mysql - 复杂的mysql查询,连接表并将多行显示为一行