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

есть табличка
id date id21 2014-08-01 12:00:011 2014-08-01 12:00:021 2014-08-01 12:00:031 2014-08-01 12:00:041 2014-08-01 12:00:052 2014-08-01 12:01:012 2014-08-01 12:01:022 2014-08-01 12:01:032 2014-08-01 12:01:042 2014-08-01 12:01:053 2014-08-01 12:02:013 2014-08-01 12:02:023 2014-08-01 12:02:033 2014-08-01 12:02:043 2014-08-01 12:02:05


Задача: вывести по 3 елемента по каждоми ID с максимальной датой
аля
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select first 3 * from табличка 
where id=1
order by date desc
union all
select first 3 * from табличка 
where id=2
order by date desc
union all
select first 3 * from табличка 
where id=3
order by date desc


Как написать запрос что бы не плодить union all ?
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710838
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Trey!
You wrote on 1 августа 2014 г. 13:59:47:

Trey> Как написать запрос что бы не плодить union all ?
а шо, это работает?
в эпоху доисторического материализма order by
можно было лепить только в конце, применительно ко всем
запросам объединённым в union all.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710844
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREY,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
WITH T2
AS (SELECT
        ID,
        ID_2,
        BYDATE,
        BYTIME,
        ROW_NUMBER() OVER(PARTITION BY ID_2 ORDER BY BYDATE DESC) AS N
    FROM
        T
    WHERE ID_2 BETWEEN 1 AND 3)
SELECT
    *
FROM
    T2
WHERE N <= 3
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710852
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийа шо, это работает?
без понятия
Это шобы смыл был понятен
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710854
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

спасибо , шас попробую
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710863
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREYшас попробуютрешку поставить не забудь.
Мимопроходящийв эпоху доисторического материализма order by
можно было лепить только в конце, применительно ко всем
запросам объединённым в union all.а потом историццки материализовался селект... фром (селект ... ордер бай) и стало можно припрятать ордер бай.
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710867
авторшас попробую не забудь только ФБ-3 сначала поставить... :-)
Если же для 2.1 или 2.5, то - вот, пробуй:

DDL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
recreate table td(id int, dt date);
commit;
insert into td select rand()*5, dateadd( rand()*100 day to date '01.01.2014')
from rdb$types, rdb$types;
commit;
create index td_id on td(id);
create descending index td_dt_desc on td(dt);
commit;

Query:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with
c as(
    select id, max(dt) d1 from td group by id
)
,d as(
    select id, d1, (select dt from td x where x.id=c.id and x.dt < c.d1 order by x.dt desc rows 1) d2
    from c
)
,e as(
    select id, d1, d2, (select dt from td x where x.id=d.id and x.dt < d.d2 order by x.dt desc rows 1) d3
    from d
)
select
    id
    ,decode(n.i, 1, d1, 2, d2, d3) dx
from e,(select 1 i from rdb$database union all select 2 from rdb$database union all select 3 from rdb$database) n
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710873
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyтрешку поставить не забудь.

Ваня Сусанинне забудь только ФБ-3 сначала поставить... :-)

простите за невежество, а 3-ка когда вышла то?
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710875
TREY3-ка когда вышла то? Дык год взад уже почти... альфа... ;-)
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710877
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваня Сусанинавторшас попробую не забудь только ФБ-3 сначала поставить... :-)
Если же для 2.1 или 2.5, то - вот, пробуй:

DDL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
recreate table td(id int, dt date);
commit;
insert into td select rand()*5, dateadd( rand()*100 day to date '01.01.2014')
from rdb$types, rdb$types;
commit;
create index td_id on td(id);
create descending index td_dt_desc on td(dt);
commit;
Query:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with
c as(
    select id, max(dt) d1 from td group by id
)
,d as(
    select id, d1, (select dt from td x where x.id=c.id and x.dt < c.d1 order by x.dt desc rows 1) d2
    from c
)
,e as(
    select id, d1, d2, (select dt from td x where x.id=d.id and x.dt < d.d2 order by x.dt desc rows 1) d3
    from d
)
select
    id
    ,decode(n.i, 1, d1, 2, d2, d3) dx
from e,(select 1 i from rdb$database union all select 2 from rdb$database union all select 3 from rdb$database) n

работает , спасибо ..

охренеть конечно
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710882
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати , вот нашел доку
http://www.firebirdsql.org/file/community/ppts/fbcon11/fb.2011.whatsnew.en.pdf
over () должен еще 2.5 понимать, но говорит что не понимает ..

пишу вот к примеру

Код: sql
1.
2.
3.
4.
SELECT  id,
        sum(id) OVER()
    FROM
        t



Код: sql
1.
2.
3.
SQL error code = -104.
Token unknown - line 2, column 24.
(.


че так ?
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710884
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREYа 3-ка когда вышла то?Чегого-то ты милок на нас беленькие глазьи на синем фоне таращишь? Ты ж не уточнил для чего тебе надо. Это у Дениса спрошать надо, он тебе троешный синтаксис предложил.
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710888
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREY over () должен еще 2.5 понимать, но говорит что не понимает ..релизноты наше фсё, а не презентухи.
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710893
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

ну дык ТС не указал версию сервера. Имею право отвечать для любой. У меня тут под рукой трёшка для тестирования стоит...
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710900
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дока по переезду с 2.5 на 3 есть какая то на будущее ?
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710907
TREYдока по переезду с 2.5 на 3 есть какая то на будущее ?не знаю про доку, но ежедневный backup моего продакшена силами 2.5 и рестор его силами 3.0, с выполнением нескольких запросов и сравнением результатов, показал что всё пока что Ок. Есть, конечно, некоторые места для рихтовки произв-сти (я про 3.0), но сами отчеты содержат одинаковые данные, а это самое важное.
Однако, в 3.0 могут быть регресс-баги, требуется интенсивное тестирование. Так что присоединяйся :-)
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710910
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyа потом историццки материализовался селект... фром (селект ... ордер
бай) и стало можно припрятать ордер бай.
А вот изобретёт кто-нибудь распараллеливание юниона и опять оно накроется медным тазом.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710913
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREY,

такой доки нет и не будет. По большому счёту достаточно b/r. Не совместимость с FB2.5 вроде только одна CORE-2812 + проверить идентификаторы на новые ключевые слова
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710916
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваня Сусанинтребуется интенсивное тестирование. Так что присоединяйся :-)
тут на своих багах седеешь иногда за пол дня пока найдешь :)
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710917
TREY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо всем , чмоке
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710941
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TREYВаня Сусанинтребуется интенсивное тестирование. Так что присоединяйся :-)
тут на своих багах седеешь иногда за пол дня пока найдешь :)

на самом деле FB3, не смотря на то, что Alpha, довольно стабильно работает и уронить его сейчас довольно тяжело (по крайней мере труднее чем FB2.5 RC). За что спасибо разработчикам и Таблоиду. Хотя на продакшн ставить его ещё рановато ибо от снапшоту к снапшоту может меняться ODS и вылазить глюки при введении новых возможностей.
Да и оптимизатор там пока не доведён до ума. У меня нашёлся один регресс относительно 2.5, но сделать легко воспроизводимый тест кейс тяжело, пришлось отсылать ДЕ базу ( странности в оптимизаторе 3.x ). Пока это ещё не поправлено.
...
Рейтинг: 0 / 0
Пятничный запросик
    #38710952
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА вот изобретёт кто-нибудь распараллеливание юниона и опять оно накроется медным тазом.Говорят, в америке кур доят.
...
Рейтинг: 0 / 0
Пятничный запросик
    #38712024
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyМимопроходящийв эпоху доисторического материализма order by
можно было лепить только в конце, применительно ко всем
запросам объединённым в union all.а потом историццки материализовался селект... фром (селект ... ордер бай) и стало можно припрятать ордер бай.
В тех редких случаях, когда это таки требуется, и не процедурой делано, сортирую с помощью GROUP BY.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Пятничный запросик
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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