powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / хитрая сортировка
9 сообщений из 9, страница 1 из 1
хитрая сортировка
    #38578863
evgen29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, надо по работе сделать одну хитрую сортировку.

допустим у меня есть 6 записей в неиндексированной таблице

a b c d
1 1 null 0
2 2 null 0
3 1 null 0
4 3 null 0
5 2 null 0
6 1 null 0

надо сделать выборку SELECT с сортировкой по полю b так, чтобы записи перетасовались по группам с уникальным значением поля b повторяясь, т.е. получилось

a b c d
1 1 null 0
2 2 null 0
4 3 null 0
3 1 null 0
5 2 null 0
6 1 null 0
то бишь вначале ищутся значения с полем b=1, берется самая первая запись, далее с полем b=2,3 и тд, как только все первые найдены, опять ищем следующую запись с b=1,2,3...

если кто сталкивался или придумает, напишите пжста. Заранее спасибо!
...
Рейтинг: 0 / 0
хитрая сортировка
    #38578873
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
select a,b,c,d from t
order by row_num() over (partition by b),b


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
хитрая сортировка
    #38578885
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen29вначале ищутся значения с полем b=1, берется самая первая запись, далее с полем b=2,3 и тд, как только все первые найдены, опять ищем следующую запись с b=1,2,3...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
recreate table t(a int, b int, c int default null, d int default 0); commit;
insert into t(a,b) values(1,1);
insert into t(a,b) values(2,2);
insert into t(a,b) values(3,1);
insert into t(a,b) values(4,3);
insert into t(a,b) values(5,2);
insert into t(a,b) values(6,1);
commit;

Код: sql
1.
2.
3.
select a.*
from t a
order by (select count(*) from t x where x.b=a.b and x.a<a.a)

ABCD110220430310520610
...
Рейтинг: 0 / 0
хитрая сортировка
    #38578888
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Код: sql
1.
2.
select a,b,c,d from t
order by row_num() over (partition by b),b

а я теперь знаю, какой будет след. вопрос у ТСа...
...
Рейтинг: 0 / 0
хитрая сортировка
    #38578936
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

ДС в своем репертуаре - стебется с человека, не осилившего тему "Читать всем" и, соответственно, не указавшего версию сервера :)
...
Рейтинг: 0 / 0
хитрая сортировка
    #38578964
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я даю простейшие варианты. Если у человека неправильная версия - его проблема, пусть берёт
правильную. Для контрольной это пофиг, а в продуктиве такие извраты не бывают.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
хитрая сортировка
    #38578982
evgen29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не ругайтесь, версия 2.1 и к сожалению ближайшее время апгрейд не предвидится. Зависит это не от меня.
Эта штука под 2.1 не работает
select a,b,c,d from t
order by row_num() over (partition by b),b

эта может и работает
select a.*
from t a
order by (select count(*) from t x where x.b=a.b and x.a<a.a)
но нет поля, которое проставляет порядковый номер записи

а через rdb$db_key никак нельзя сделать второй запрос? Просто при преобразовании в число rdb$db_key ругается на
x.rdb$db_key<a.rdb$db_key
...
Рейтинг: 0 / 0
хитрая сортировка
    #38578994
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen29эта может и работает ... но нет поля, которое проставляет порядковый номер записиПотрудитесь привести нормальный DDL таблицы, пример данных (10-12 строк) и то, что вам надо получить. Про "порядковый номер" ничего не говорилось в стартовом посте.
Пример оформления вопроса см. в прилепленной теме "ЧИТАТЬ ВСЕМ, КТО ..."
...
Рейтинг: 0 / 0
хитрая сортировка
    #38578998
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen29,
rdb$db_key нет смысла использовать для > <
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / хитрая сортировка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]