2015-03-11 4 views
-3

Я пытаюсь сгруппировать несколько строк и заказать их по общим значениям, но им трудно понять, что происходит не так.Попытка упорядочить таблицу несколько раз

Name  Total 
======= ======= 
ASOS  222 
Tesco  11 
ASOS  11111 
Tesco  123 

таблица должна выглядеть следующим образом

Name  Total 
======= ======= 
ASOS  11111 
ASOS  222 
Tesco  123 
Tesco  11 

Я думал, этот запрос будет работать

select * from tablename order by name asc, total asc 

Но это показывает результат в неправильном порядке.

Любая помощь будет оценена по достоинству.

+0

что тип данных 'To tal'? –

+0

Тип данных: INT – Hashey100

+1

'select * from table order by name, total desc', должен выполнять задание –

ответ

1

Попробуйте

select * from tablename order by total desc 

Выбор двух вещей ORDER BY не работает слишком хорошо, если вы не знакомы с ORDER BY синтаксисом. из вашего описания, похоже, что вы просто хотите получить максимальную сумму вверху. Этот запрос будет упорядочить результаты по общему убыванию (по убывающей)

, если вы хотите, чтобы имена по возрастанию (по убывающей) в то же время, попробуйте

select * from tablename order by name asc, total desc 
+0

Спасибо за помощь, я пробовал это уже, но я также хочу заказать по самым высоким URL-адресам. Asos должен всегда отображаться сверху, потому что он имеет наибольшее значение. Я думаю, мне, возможно, придется использовать группу по функциям – Hashey100

+0

Если факт, что есть кратные имена, необязательно, вы можете попробовать что-то вроде 'select different name, sum (total) как total from tablename group by name order по общему описанию –

0

Первый заказ на максимальной сумме для каждого имя, по убыванию, заказ по суммарному убыванию:

select * 
from tablename t1 
order by (select max(total) from tablename t2 
      where t1.name = t2.name) desc, 
     total desc 
0

Попробуйте это:

SELECT * 
FROM tablename 
ORDER BY 
    Name, 
    char_length(CAST(Total As varchar(max))) DESC, 
    Total DESC 
Смежные вопросы