Сортировка чисел в MySQL

AA
На сайте с 16.08.2006
Offline
74
4447

Пишу

SELECT FORMAT(AVG(v.bal),2) as avgb FROM table as v

GROUP BY...

ORDER BY avgb DESC

сортирует как текст, то есть

9,60

8,56

7,34

10,00 !!

поле int

Скажите, что делать, чтобы нормуль сортировало?

C
На сайте с 10.08.2006
Offline
50
#1
AndreyA:
Пишу

SELECT FORMAT(AVG(v.bal),2) as avgb FROM table as v
GROUP BY...
ORDER BY avgb DESC

сортирует как текст, то есть
9,60
8,56
7,34
10,00 !!

поле int
Скажите, что делать, чтобы нормуль сортировало?

DESC измени на ASC, если ты про обратный порядок

dlyanachalas
На сайте с 15.09.2006
Offline
693
#2
AndreyA:
Пишу

SELECT FORMAT(AVG(v.bal),2) as avgb FROM table as v
GROUP BY...
ORDER BY avgb DESC

сортирует как текст, то есть
9,60
8,56
7,34
10,00 !!

поле int
Скажите, что делать, чтобы нормуль сортировало?

Ещё бы. Функция FORMAT преобразует число в строку, и вы пытаетесь по нему отсортировать.

Вот как надо:

SELECT FORMAT(avgs, 2) as avgb FROM

(
SELECT AVG(v.bal) as avgs FROM table as v
GROUP BY...
) as tempTable
ORDER BY avgs DESC
AA
На сайте с 16.08.2006
Offline
74
#3

Спасибо, но вложенные запросы отменяются..

Так ещё лучше:


SELECT ROUND(AVG(v.bal),2) as avgb FROM table as v
GROUP BY...
ORDER BY avgb DESC
deleon
На сайте с 16.09.2004
Offline
173
#4

К сожалению, единственная функция преобразования типов CAST в MySQL не преобразует в вещественные типы данных, только в целые. В данной ситуации самый простой выход, в ORDER BY указать тип сортировки BINARY:


SELECT v.bal FROM table as v
GROUP BY...
ORDER BY BINARY v.bal
I9
На сайте с 09.01.2007
Offline
10
#5

ORDER BY ABS(avgb) DESC

не пробовали?

dlyanachalas
На сайте с 15.09.2006
Offline
693
#6
AndreyA:
Спасибо, но вложенные запросы отменяются..

Просто интересно - чем вам не нравятся вложенные запросы?

deleon
На сайте с 16.09.2004
Offline
173
#7
AndreyA:

сортирует как текст, то есть
9,60
8,56
7,34
10,00 !!

поле int

Одного не понял: в примере вещественные числа, а ниже написано, что поле int 😕

AA
На сайте с 16.08.2006
Offline
74
#8

поле int, потом берется среднее арифм.

решено - ROUND не меняет тип

AA
На сайте с 16.08.2006
Offline
74
#9

а подзапросы у меня не поддерживаются ...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий