选择满足缺少表属性数量的行?

时间:2019-03-04 10:20:48

标签: mysql sql data-science

假设我具有表示为表格的每一列的属性列表 有下面的食物表,

所有属性的单位均与上述链接RDA中指定的单位相同。

foodName  Energy  Proteins  Fats  Carbohydrate  Sodium  Calcium  Cholesterol Sugar ........

1          323        32      121      333        34       232     345      654 
2          32         27      76       63         4666     25      32       564
3          23         677     564      677        45       276     123       55
.
.
.
.
. 

并且缺少百分比金额。

通过考虑RDA(参考每日摄入量)来计算百分比。

喜欢

Total nutrients = [ Energy (50 %) , Proteins (60 %) , Fats (70 %) ]
Missing nutrients = [ Energy (50 %) , Proteins (40 %) , Fats (30 %) , Carbohydrate (100 %), Sodium (100 %) , Cholesterol (100 %) , Sugar (100 %), etc ]

我的任务是取回所有能满足营养需求的食物

我已经尝试

步骤:

  1. 通过公式对所有列值进行归一化,以获取介于[0-1]之间的所有值
  

xi =(xi-minValue)/(maxValue-minValue)

  1. 在我的MySQL数据库中使用以下查询。
    请注意,SELECT语句中的常量是每种营养素的maxValue,这样我就可以获得营养素的值,而不是归一化的值。
  

从数据ORDER BY SCORE desc limit 10的数据中选择食品名,钠38758 * Sodium作为钠,16500 * Potassium作为钾,(Sodium + Potassium作为分数。

但是我没有得到所需的结果,例如,如果缺少的营养素中钠的含量大于钾,而钾的含量大于糖或其他营养素,那么当前所有营养素都被认为具有同等优先权,从而找到了< strong>得分。

如何确定SQL查询中列的优先级以获取结果?

0 个答案:

没有答案