Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Есть вопрос по сортировке  [new]
DenVVMN
Member

Откуда: Нижний Новгород
Сообщений: 26
Добрый день!

Есть задача сортировки на
Microsoft SQL Server 2014 - 12.0.4213.0 (X64)

Необходимо отсортировать таблицу вида

select * from 
(
select 'AA' n,9 a union all
select 'AA' n,2 union all
select 'BB' n,12 union all
select 'BB' n,5 union all
select 'CC' n,11 union all
select 'CC' n,10
) t


таким образом, чтобы значения групп, объединенных полем [n] шли по убыванию значения я.
Группы также сортируются по убыванию значения а
(тяжело сформулировать)
результат сортировки примера должен быть:

na
BB12
BB5
CC11
CC10
AA9
AA2


пока не получается придумать достойного решения. Требуется помощь.
18 июн 19, 11:35    [21910436]     Ответить | Цитировать Сообщить модератору
 Re: Есть вопрос по сортировке  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
DenVVMN,

оконные функции. max() over(partition by )
18 июн 19, 11:37    [21910440]     Ответить | Цитировать Сообщить модератору
 Re: Есть вопрос по сортировке  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
Щукина Анна,

если точнее, и дословно, то:
<тут ваш запрос>
order by max(a) over(partition by n) desc, a desc
18 июн 19, 11:38    [21910442]     Ответить | Цитировать Сообщить модератору
 Re: Есть вопрос по сортировке  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Щукина Анна
Щукина Анна,

если точнее, и дословно, то:
<тут ваш запрос>
order by max(a) over(partition by n) desc, a desc
Так не пойдёт. А если одинаковый максимум в двух или трёх группах?
order by max(a) over(partition by n) desc, n desc, a desc
18 июн 19, 12:20    [21910481]     Ответить | Цитировать Сообщить модератору
 Re: Есть вопрос по сортировке  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
iap,

спросите у автора, что ему в этом случае нужно и почему... ;)
18 июн 19, 12:21    [21910485]     Ответить | Цитировать Сообщить модератору
 Re: Есть вопрос по сортировке  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
iap,

думается, автору хватит ума вставить "промежуточную" сортировку по n между двумя по a...
18 июн 19, 12:22    [21910487]     Ответить | Цитировать Сообщить модератору
 Re: Есть вопрос по сортировке  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Щукина Анна
iap,

спросите у автора, что ему в этом случае нужно и почему... ;)
Я вижу, что все записи одной и той же группы идут подряд.
А в вашем случае они могут перемешиваться, если максимальное значение в этих группах совпадает.
18 июн 19, 12:23    [21910488]     Ответить | Цитировать Сообщить модератору
 Re: Есть вопрос по сортировке  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
iap,

оу, собственно, вы всё за автора и сделали...
18 июн 19, 12:23    [21910489]     Ответить | Цитировать Сообщить модератору
 Re: Есть вопрос по сортировке  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
iap,

думается, автору нужен был принципиальный пинок, именно про max() over().
остальное он бы и сам допер как сделать. но дело ваше - можно, конечно, совсем уж всё разжёвывать до состояния каши...
18 июн 19, 12:24    [21910493]     Ответить | Цитировать Сообщить модератору
 Re: Есть вопрос по сортировке  [new]
DenVVMN
Member

Откуда: Нижний Новгород
Сообщений: 26
Щукина Анна,

спасибо, то что нужно!
18 июн 19, 12:32    [21910505]     Ответить | Цитировать Сообщить модератору
 Re: Есть вопрос по сортировке  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
DenVVMN,

не забудьте учесть весьма дельные и "по месту" замечания от iap-а... особенно при неуникальных максимумах по a среди разных n
18 июн 19, 12:34    [21910508]     Ответить | Цитировать Сообщить модератору
 Re: Есть вопрос по сортировке  [new]
DenVVMN
Member

Откуда: Нижний Новгород
Сообщений: 26
iap,
Спасибо за конструктив.
18 июн 19, 12:36    [21910512]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить