|
|
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
Есть примитивный запрос в Access типа Код: sql 1. 2. 3. Что-то я не понял, как это же самое спросить у PostgreSQL без извращений. Подскажите, а то уже час туплю, только на SQL плз П.С. First - это агрегатная функция, которая возвращает первое значение, даже без сортировки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 17:08 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
ШыфлFirst - это агрегатная функция, которая возвращает первое значение, даже без сортировкиdistinct on - только заход на цель с противоположной стороны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 17:41 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
Шыфл, Хотя на самом деле Вам не нужны функции. Вам нужен DISTINCT ON () ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 17:42 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
Шыфл П.С. 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) ну и т.п. и т.д. и прочая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 17:44 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
Шыфл, вот несколько примеров Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 17:54 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
Шыфл, помимо предложенных приемов есть еще такой хак через массивы: Код: sql 1. 2. 3. 4. не самый быстрый, но довольно гибкий и легко читается в запросах. в случаях, когда на одно сгруппированное поле приходися небольшое число записей может сгодиться. с window функциями можно на много граблей наступить в сложных запросах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2015, 18:13 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
AlexiusШыфл, помимо предложенных приемов есть еще такой хак через массивы: Код: sql 1. 2. 3. 4. не самый быстрый, но довольно гибкий и легко читается в запросах. в случаях, когда на одно сгруппированное поле приходися небольшое число записей может сгодиться. с window функциями можно на много граблей наступить в сложных запросах. зачем этот хак, при наличии нормальный оконных функций?? Граблей в нем самом куда больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 09:42 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
Ivan Durak, может я не умею хорошо готовить оконные функции, но у меня например не получалось нормально их прикрутить, когда в запросе уже есть group by и он там нужен и нужно для каждой группы определенное значение извлечь. для такой задачи оконные функции имхо вообще ни к чему. почему встроенных first/last агрегатных функций до сих пор нет - загадка. правда ничто не мешает их самому добавить: https://wiki.postgresql.org/wiki/First/last_(aggregate) . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 10:49 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
AlexiusIvan Durak, может я не умею хорошо готовить оконные функции, но у меня например не получалось нормально их прикрутить, когда в запросе уже есть group by и он там нужен и нужно для каждой группы определенное значение извлечь. для такой задачи оконные функции имхо вообще ни к чему. почему встроенных first/last агрегатных функций до сих пор нет - загадка. правда ничто не мешает их самому добавить: https://wiki.postgresql.org/wiki/First/last_(aggregate) . по вашей ссылке такие же бесчестные ф-ии, дискриминирующие несчастный NULL, как и в ссылке в 18437133 . (там, в теме по той ссылке, дальше немного про попытку обойти эту косорукую дискриминацию). т.е. кривобокие квадратноколёсые велосипеды с рамой из грабель. Если c--функция такая -- же , то нахер-нахер. самое смешное -- тут примитивный корелят с limit 1 рулит, и не просит физического чтения. тс просто ленится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 10:59 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
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 лет в обед ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 11:39 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
qwwqAlexiusIvan Durak, может я не умею хорошо готовить оконные функции, но у меня например не получалось нормально их прикрутить, когда в запросе уже есть group by и он там нужен и нужно для каждой группы определенное значение извлечь. для такой задачи оконные функции имхо вообще ни к чему. почему встроенных first/last агрегатных функций до сих пор нет - загадка. правда ничто не мешает их самому добавить: https://wiki.postgresql.org/wiki/First/last_(aggregate) . по вашей ссылке такие же бесчестные ф-ии, дискриминирующие несчастный NULL, как и в ссылке в 18437133 . (там, в теме по той ссылке, дальше немного про попытку обойти эту косорукую дискриминацию). т.е. кривобокие квадратноколёсые велосипеды с рамой из грабель. Если c--функция такая -- же , то нахер-нахер. самое смешное -- тут примитивный корелят с limit 1 рулит, и не просит физического чтения. тс просто ленится. первое/последнее значение в группе с учетам нулла - легко берется по row_number. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 11:43 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
Ivan Durak <> первое/последнее значение в группе с учетам нулла - легко берется по row_number. И ? вопрос в том, как его присунуть в запрос с group by и ДРУГИМИ агрегатами. В случае же отсутствия ДРУГИХ аггрегатов в запросе --- сплошь и рядом окна проигрывают по выразительности DISTINCT ON-у, а по планам, [при наличии индексов по полям группировки, и и большой кратности их вхождений] -- известной технике выборки дистинктов по индексу. //всё ждём, когда это реализуют в планировщике для distinct on ({index_list}) "искаропке" т.е. окна тут -- это натягивание совы на глобус . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 12:30 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
qwwq<> //всё ждём, когда это реализуют в планировщике для distinct on ({index_list}) "искаропке" <> не мы одни, как оказалось http://www.fors.ru/upload/magazine/07/http_text/russia_s.malakshinov_distinct_top.html даже странно, уж про оптимайзер оракла хотелось думать лучше в мускуле--то оно вроде как искаропке. или в 12 и в самом тоже сделали ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 12:55 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
qwwqне мы одни, как оказалось http://www.fors.ru/upload/magazine/07/http_text/russia_s.malakshinov_distinct_top.html ха сокращенная копия моей презентации с pgmaster прошлогодней. Те же подходы и те же решения. -- Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 14:53 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 15:03 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, при наличии данных об изрядной степени вырождения -- выбрать алгоритм обхода индекса сиками [seek] -- решение столь же древнее, сколь и очевидное. mumps--исты, наверное, смотрят на нас как на .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 15:07 |
|
||
|
Аналог first
|
|||
|---|---|---|---|
|
#18+
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 следующее сообщение :] [см. дату] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 15:19 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39107393&tid=1997625]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 446ms |

| 0 / 0 |
