2016-01-09 3 views
0

Я пытаюсь написать отчет о некоторых данных, которые я собрал, используя форму google. Каждого человека спрашивали, сколько предметов у них в шкафу. Я хочу представить данные как количество, сколько из общего количества попало в каждый диапазон. Таким образом, я использовал этот запрос MySQL для подсчета экземпляров каждого ответа:Пользовательский порядок сортировки для результатов подсчета MYSQL?

SELECT `Closet` , COUNT(*) FROM `TABLE 1` GROUP BY `Closet` 

А вот полученные данные:

Closet | COUNT(*) 
--------+------------ 
0  | 8 
1-5  | 124 
101-200 | 7 
11-20 | 181 
201-300 | 3 
21-50 | 171 
51-100 | 48 
6-10 | 156 

Проблема в том, что в алфавитном порядке, 101-200 пунктов сортирует до того 6- 10 предметов. Я в основном хочу отсортировать это в некотором роде, чтобы положить диапазоны чисел в логическом порядке. (1-5, 6-10, 11-20 и т. Д.).

Как это сделать?

+2

способ хранения ваших данных, затрудняет доступ таким образом. вместо сохранения поля в качестве строки, рассмотрите возможность сохранения его в двух полях (closet_left и closet_right) в виде целых чисел, которые могут быть правильно упорядочены. – amdixon

+0

Я собрал информацию в форме google и ожидал, что просто просмотрю эти данные вручную, потому что ожидал около 50 ответов. У меня более 700 ответов, и я делаю это вручную. Это ужасный набор данных по многим причинам, но теперь у меня есть 700 человек, заинтересованных в результатах, поэтому мне нужно сделать что-то, чтобы сделать эту работу. Если бы я ожидал получить этот большой ответ, я бы закодировал форму и фактически создал базу данных. Это плохая ситуация. –

+0

его ок, чтобы выполнить шаг очистки, чтобы перенести это хранилище в более доступную форму. тогда, когда вы получаете доступ к своим данным, оно должно быть простым. – amdixon

ответ

1

Вам нужно будет использовать convert & substring_index.

SELECT `Closet` , COUNT(*) FROM `TABLE 1` GROUP BY `Closet` order by convert(substring_index(Closet,'-',1), unsigned integer) 

Это сортирует шкаф, беря первое число диапазонов, что должно по существу выполнять эту работу.

+0

Это прекрасно работает, спасибо. –

+0

Отличная функция, о которой я раньше не знал! Ваше редактирование было даже не нужно, поскольку 'substring_index ('0', '-', 1)' возвращает '0' уже. +1 – cars10m