MySQL帮助,根据计算更新字段

时间:2011-06-18 23:19:16

标签: mysql sql math

我一直在尝试解决这个特殊的问题,虽然我可以很容易地想到一种强力的PHP + MySQL解决方案,但我想要一些解决这个特定问题的指导,而不用PHP迭代字段。

所以..有了这个,这就是问题所在。 我希望通过单个查询(或3)预先计算每个房间相对于所有其他房间的大小,这样大于所有其他房间的66%的房间可以填写大型的房间,而房间在33%以内 - 66%的范围为中等,其余为小。

我对如何完成此操作有一个大概的想法,但我希望有人能够更熟练地将SQL查询作为一个方法,至少可以指出我正确的方向。

对我来说最困难的部分是能够同时更新符合特定范围内标准的每个领域:(。

这是表格的一个例子

Rooms
    ID | Length | Width | Relative Size [Expected Values]
    ------------------------------------
    1  | 15     | 12    | Large
    2  | 15     | 12    | Large
    3  | 10     | 10    | Medium
    4  | 10     | 10    | Medium
    5  | 8      | 9     | Small
    6  | 8      | 8     | Small
    7  | 8      | 7     | Small
    8  | 10     | 9     | Medium

我对能够帮助我解决此问题的资源或线索感到非常满意,但我一直在圈子里。

感谢任何帮助我的尝试。

编辑:我最终采用标准偏差方法,因为在这种情况下它更有意义,我会将其作为答案发布。

1 个答案:

答案 0 :(得分:1)

我无法想出在1个查询中执行此操作的方法,但这是我尝试在3中执行此操作,假设在填充之前大小为Null

Update table set size = 'Large' where ID in (select TOP 33 PERCENT ID from table order by length*width Desc)

Update table set size = 'Small' where ID in (select TOP 33 PERCENT ID from table order by length*width Asc)

Update table set size = 'Medium' where size = null