powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Аналог first
18 сообщений из 18, страница 1 из 1
Аналог first
    #39106971
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть примитивный запрос в Access типа
Код: sql
1.
2.
3.
SELECT ОрганизацииИнфо2.Код, First(ОрганизацииИнфо2.Телефон) AS [First-Телефон]
FROM ОрганизацииИнфо2
GROUP BY ОрганизацииИнфо2.Код;



Что-то я не понял, как это же самое спросить у PostgreSQL без извращений. Подскажите, а то уже час туплю, только на SQL плз

П.С. First - это агрегатная функция, которая возвращает первое значение, даже без сортировки
...
Рейтинг: 0 / 0
Аналог first
    #39107036
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шыфл,

RTFM

Там смотрите first_value, last_value

эм. "первое значение без сортировки" - это как?
...
Рейтинг: 0 / 0
Аналог first
    #39107039
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШыфлFirst - это агрегатная функция, которая возвращает первое значение, даже без сортировкиdistinct on - только заход на цель с противоположной стороны
...
Рейтинг: 0 / 0
Аналог first
    #39107040
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шыфл,

Хотя на самом деле Вам не нужны функции. Вам нужен DISTINCT ON ()
...
Рейтинг: 0 / 0
Аналог first
    #39107047
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шыфл
П.С. First - это агрегатная функция, которая возвращает первое значение, даже без сортировки
как я правильно помню, ф--и First и Last в аксессе не гарантируют ничего относительно порядка. И могут быть произвольно заменены Min/Max / увеличатся (в аксесс) только затраты на вычисление.

Далее вы, например, можете сказать CREATE AGGREGATE

http://www.sql.ru/forum/926806/left-join-group-without-max?mid=12262489&hl=create aggregate first anyelement#12262489


Далее, вы можете например воспользоваться фишками диалекта Pg-SQL а именно DISTINCT ON
или LATERAL (SELECT ....[ORDER BY ...] LIMIT 1)

ну и т.п. и т.д. и прочая
...
Рейтинг: 0 / 0
Аналог first
    #39107062
Фотография grufos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шыфл,

вот несколько примеров
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select t.relkind, p.relname
from (
    select relkind, min(oid) as oid
    from pg_class
    group by relkind
) t 
inner join pg_class p on t.oid = p.oid
order by t.relkind

select distinct on(relkind) relkind, relname
from pg_class
order by relkind

select distinct relkind, first_value(relname) over(partition by relkind order by relkind)
from pg_class
...
Рейтинг: 0 / 0
Аналог first
    #39107085
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шыфл,

помимо предложенных приемов есть еще такой хак через массивы:

Код: sql
1.
2.
3.
4.
select ...,
(array_agg(field order by something))[1]
from ...
group by ...




не самый быстрый, но довольно гибкий и легко читается в запросах. в случаях, когда на одно сгруппированное поле приходися небольшое число записей может сгодиться.
с window функциями можно на много граблей наступить в сложных запросах.
...
Рейтинг: 0 / 0
Аналог first
    #39107393
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexiusШыфл,

помимо предложенных приемов есть еще такой хак через массивы:

Код: sql
1.
2.
3.
4.
select ...,
(array_agg(field order by something))[1]
from ...
group by ...




не самый быстрый, но довольно гибкий и легко читается в запросах. в случаях, когда на одно сгруппированное поле приходися небольшое число записей может сгодиться.
с window функциями можно на много граблей наступить в сложных запросах.
зачем этот хак, при наличии нормальный оконных функций?? Граблей в нем самом куда больше
...
Рейтинг: 0 / 0
Аналог first
    #39107462
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durak,

может я не умею хорошо готовить оконные функции, но у меня например не получалось нормально их прикрутить, когда в запросе уже есть group by и он там нужен и нужно для каждой группы определенное значение извлечь. для такой задачи оконные функции имхо вообще ни к чему.

почему встроенных first/last агрегатных функций до сих пор нет - загадка. правда ничто не мешает их самому добавить: https://wiki.postgresql.org/wiki/First/last_(aggregate) .
...
Рейтинг: 0 / 0
Аналог first
    #39107479
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexiusIvan Durak,

может я не умею хорошо готовить оконные функции, но у меня например не получалось нормально их прикрутить, когда в запросе уже есть group by и он там нужен и нужно для каждой группы определенное значение извлечь. для такой задачи оконные функции имхо вообще ни к чему.

почему встроенных first/last агрегатных функций до сих пор нет - загадка. правда ничто не мешает их самому добавить: https://wiki.postgresql.org/wiki/First/last_(aggregate) .
по вашей ссылке такие же бесчестные ф-ии, дискриминирующие несчастный NULL, как и в ссылке в 18437133 . (там, в теме по той ссылке, дальше немного про попытку обойти эту косорукую дискриминацию).

т.е. кривобокие квадратноколёсые велосипеды с рамой из грабель.
Если c--функция такая -- же , то нахер-нахер.

самое смешное -- тут примитивный корелят с limit 1 рулит, и не просит физического чтения. тс просто ленится.
...
Рейтинг: 0 / 0
Аналог first
    #39107537
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexiusIvan Durak,

может я не умею хорошо готовить оконные функции, но у меня например не получалось нормально их прикрутить, когда в запросе уже есть group by и он там нужен и нужно для каждой группы определенное значение извлечь. для такой задачи оконные функции имхо вообще ни к чему.

почему встроенных first/last агрегатных функций до сих пор нет - загадка. правда ничто не мешает их самому добавить: https://wiki.postgresql.org/wiki/First/last_(aggregate) .
http://www.postgresql.org/docs/devel/static/functions-window.html
first_value уже 100 лет в обед
...
Рейтинг: 0 / 0
Аналог first
    #39107544
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqAlexiusIvan Durak,

может я не умею хорошо готовить оконные функции, но у меня например не получалось нормально их прикрутить, когда в запросе уже есть group by и он там нужен и нужно для каждой группы определенное значение извлечь. для такой задачи оконные функции имхо вообще ни к чему.

почему встроенных first/last агрегатных функций до сих пор нет - загадка. правда ничто не мешает их самому добавить: https://wiki.postgresql.org/wiki/First/last_(aggregate) .
по вашей ссылке такие же бесчестные ф-ии, дискриминирующие несчастный NULL, как и в ссылке в 18437133 . (там, в теме по той ссылке, дальше немного про попытку обойти эту косорукую дискриминацию).

т.е. кривобокие квадратноколёсые велосипеды с рамой из грабель.
Если c--функция такая -- же , то нахер-нахер.

самое смешное -- тут примитивный корелят с limit 1 рулит, и не просит физического чтения. тс просто ленится.
первое/последнее значение в группе с учетам нулла - легко берется по row_number.
...
Рейтинг: 0 / 0
Аналог first
    #39107612
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durak <>
первое/последнее значение в группе с учетам нулла - легко берется по row_number.
И ?

вопрос в том, как его присунуть в запрос с group by и ДРУГИМИ агрегатами.

В случае же отсутствия ДРУГИХ аггрегатов в запросе --- сплошь и рядом окна проигрывают по выразительности DISTINCT ON-у, а по планам, [при наличии индексов по полям группировки, и и большой кратности их вхождений] -- известной технике выборки дистинктов по индексу.

//всё ждём, когда это реализуют в планировщике для distinct on ({index_list}) "искаропке"

т.е. окна тут -- это натягивание совы на глобус .
...
Рейтинг: 0 / 0
Аналог first
    #39107645
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq<>
//всё ждём, когда это реализуют в планировщике для distinct on ({index_list}) "искаропке"
<>
не мы одни, как оказалось

http://www.fors.ru/upload/magazine/07/http_text/russia_s.malakshinov_distinct_top.html

даже странно, уж про оптимайзер оракла хотелось думать лучше
в мускуле--то оно вроде как искаропке. или в 12 и в самом тоже сделали ?
...
Рейтинг: 0 / 0
Аналог first
    #39107806
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwqне мы одни, как оказалось

http://www.fors.ru/upload/magazine/07/http_text/russia_s.malakshinov_distinct_top.html


ха сокращенная копия моей презентации с pgmaster прошлогодней.
Те же подходы и те же решения.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Аналог first
    #39107823
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Bogukqwwqне мы одни, как оказалось
http://www.fors.ru/upload/magazine/07/http_text/russia_s.malakshinov_distinct_top.html
ха сокращенная копия моей презентации с pgmaster прошлогодней .Статья размещена в позапрошломИнтернет-журнал "FORS"№ 7, июль 2013 Оригинал автор разместил на своем сайте в 2012
http://orasql.org/2012/09/21/distinct-values-by-index-topn
...
Рейтинг: 0 / 0
Аналог first
    #39107831
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

при наличии данных об изрядной степени вырождения -- выбрать алгоритм обхода индекса сиками [seek] -- решение столь же древнее, сколь и очевидное.
mumps--исты, наверное, смотрят на нас как на ....
...
Рейтинг: 0 / 0
Аналог first
    #39107851
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
p2.Maxim Bogukпропущено...
ха сокращенная копия моей презентации с pgmaster прошлогодней .Статья размещена в позапрошломИнтернет-журнал "FORS"№ 7, июль 2013 Оригинал автор разместил на своем сайте в 2012
http://orasql.org/2012/09/21/distinct-values-by-index-topn
а вот и не подерётесь

http://www.sql.ru/forum/969857/zadachka?mid=13197178&hl=msg 13191025#13197178
следующее сообщение :] [см. дату]
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Аналог first
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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