MySQL help, обновление полей на основе расчета - PullRequest
2 голосов
/ 19 июня 2011

Я пытался решить эту конкретную проблему, и хотя я легко могу придумать какое-то решение для грубой силы 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 Ответ

1 голос
/ 19 июня 2011

Я не мог придумать способ сделать это в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...