Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
Перехожу с Oracle на PostgreSql . Просто любопытно - есть ли в pg что-либо похожее на аналитические функции Oraclе? Никакой информации в описании нет :-( но может кто знает или пытался как-то реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 14:13 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
есть такие функции: Aggregate Functions for Statistics ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 15:08 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
Нету таких функций.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 15:22 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
Аналитических, это вида - dense_rank() over (partition by ... ) Это чтоб в запросе без group by посчитать можно было сумму по группе накопительно , и отсортировать по этой накопительной , что-то в этом роде :-) В pg в какую сторону надо копать? Ужасно ведь неохота одно и тоже несколько раз собирать :-( Может есть все-таки что-то ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 15:49 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
какая аналитика, даже ROWNUM аналога пока нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 16:18 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
Или там посчитать сумму по каждой группе , и бросить ее (сумму) в каждую строку группы чтоб посчитать %ое соотношение . Ну вообщем, много еще чего придумать можно :-) Но похоже ,действительно, одним запросом в PG не получится. Если только функцией - а в ней сначала группировку по таблице , а потом по каждой группе выбирать опять ! =8-( ,) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 16:26 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
bege231Или там посчитать сумму по каждой группе , и бросить ее (сумму) в каждую строку группы чтоб посчитать %ое соотношение .self-join ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 16:34 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat bege231Или там посчитать сумму по каждой группе , и бросить ее (сумму) в каждую строку группы чтоб посчитать %ое соотношение .self-join Ну тоже не совсем чтоб подходит . Да и таблички у меня не то что в example - Weather&Weather :-) Все равно спасибо ! За волю к победе! :-) Хотя, объединить первоначальную таблицу и ее же группировку - это мысль. Поторопилась я, конечно, насчет функции в предыдущем своем посте . Ну, буду привыкать быть проще! ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 16:56 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatself-joinв коррелированном скалярном подзапросе во фразе select. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 05:31 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
select a.*, b.total from t1 as a natural join ( select group_id, sum(value) as total from t1 group by group_id ) as b; я имел в виду такое. это называется "коррелированным скалярным подзапросом во фразе select"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 11:19 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatselect a.*, b.total from t1 as a natural join ( select group_id, sum(value) as total from t1 group by group_id ) as b; я имел в виду такое. это называется "коррелированным скалярным подзапросом во фразе select"? А если , например, надо посчитать невязку с общей суммой по группе и бросить ее на максимальный элемент в группе? Тут уж точно одним запросом не обойдешься в pg :( Как считаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 11:42 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
bege231А если , например, надо посчитать невязку с общей суммой по группе и бросить ее на максимальный элемент в группе? Тут уж точно одним запросом не обойдешься в pg :( Как считаете?Смотря что понимать под "одним запросом". А вообще можно. Но нужно ли? Монстр ещё тот получится... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 12:32 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatselect a.*, b.total from t1 as a natural join ( select group_id, sum(value) as total from t1 group by group_id ) as b; я имел в виду такое. это называется "коррелированным скалярным подзапросом во фразе select"?Не-а, я имел ввиду немного другое: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 12:33 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
bege231А если , например, надо посчитать невязку с общей суммой по группе и бросить ее на максимальный элемент в группе?что-то подзабыл математику, нагуглить быстро не получилось. по какой формуле и какому алгоритму это надо считать? какой должен быть результат для таких исходных данных: group_id, value 1, 3 1, 4 1, 4 2, 5 2, 6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 12:51 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatчто-то подзабыл математику, нагуглить быстро не получилось. по какой формуле и какому алгоритму это надо считать? какой должен быть результат для таких исходных данных: group_id, value 1, 3 1, 4 1, 4 2, 5 2, 6 Пример : Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 13:19 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
Бабичев СергейНе-а, я имел ввиду немного другое: Код: plaintext 1. 2. А тоже работает! Хотя и медленее чем join . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 13:27 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
bege231 Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 13:41 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat bege231 Код: plaintext 1. 2. 3. 4. 1- value надо рассчитать в процентном соотношении - 3.47 * ( 351/(351+376+100)) 2 - т.о. по группе получается общая сумма 3,37 (должно быть 3,47) , невязка - 0.10 3 - невязку прибавляем к максимальной ( max =376 , прибавляем .10 к 1.56 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 13:53 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
bege231 Код: plaintext 1. 2. 3. 4. 1- value надо рассчитать в процентном соотношении - 3.47 * ( 351/(351+376+100))еще сильнее запутался. :-) какие колонки составляют входные данные? 3.47 * ( 351/(351+376+100)) ~= 1.47. не вижу 1.47 в приведенной вами таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 14:20 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
Первоначальные колонки - сумма , группа , оплата 3.47 * ( 351/(351+376+100)) ~= 1.47. не вижу 1.47 в приведенной вами таблице. 1.39 и есть 1.47 :) Ошиблась чуть-чуть . Но вообще-то , 1.46 даже скорее . Все равно невязка будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 14:35 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
bege2313.47 * ( 351/(351+376+100)) ~= 1.47. не вижу 1.47 в приведенной вами таблице.1.39 и есть 1.47 :) Ошиблась чуть-чуть .кто ошиблась? :) постгрес? 1.39 - входные данные? но вы не перечислили value в списке входных данных "сумма , группа , оплата". не понимаю. :-( откуда взялось 1.39? bege231Но вообще-то , 1.46 даже скорее .мой калькулятор считает 3.47 * ( 351/(351+376+100)) = 1.4727569528416. это скорее 1.47, чем 1.46. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 14:47 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat bege231 3.47 * ( 351/(351+376+100)) ~= 1.47. не вижу 1.47 в приведенной вами таблице.1.39 и есть 1.47 :) Ошиблась чуть-чуть .кто ошиблась? :) постгрес? 1.39 - входные данные? но вы не перечислили value в списке входных данных "сумма , группа , оплата". не понимаю. :-( откуда взялось 1.39? bege231Но вообще-то , 1.46 даже скорее .мой калькулятор считает 3.47 * ( 351/(351+376+100)) = 1.4727569528416. это скорее 1.47, чем 1.46. Я ошиблась . Пример был рассчитан мной ! и 1.39 собственноручно посчитала. И value не входит в исходные данные , а тоже рассчитывается . А если 351/(351+376+100) округлить до 2х знаков ? Ну пусть уже будет 1.47 . Это что-то меняет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 14:57 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
bege231Это что-то меняет?не меняет. я не разбираюсь в данной предметной области, из ваших объяснений понять задачу не могу. умываю руки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:02 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat 12:51по какой формуле и какому алгоритму это надо считать? bege231 14:57А если 351/(351+376+100) округлить до 2х знаков ?лишь через два часа после моего вопроса вы проронили слово "округлить". для вас это наверняка очевидно, но например я и понятия не имел, что в этой задаче используется округление. знаете, что правильно сформулированная задача - уже половина решения? почему вы не смогли четко сформулировать задачу? - дана таблица из трех полей (сумма, группа, оплата) - для каждой строки приближенно вычислить с округлением до заданной точности 10**N поле value по формуле trunc( сумма*оплата/(sum_по_группе(оплата)), N ) - для каждой группы вычислить невязку по формуле сумма-sum_по_группе(value) - для каждой группы добавить невязку группы к максимальному value в группе - вывести четыре поля (сумма, группа, оплата, value) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:31 |
|
||
|
Аналитика в Pg
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat LeXa NalBat 12:51по какой формуле и какому алгоритму это надо считать? bege231 14:57А если 351/(351+376+100) округлить до 2х знаков ?лишь через два часа после моего вопроса вы проронили слово "округлить". для вас это наверняка очевидно, но например я и понятия не имел, что в этой задаче используется округление. знаете, что правильно сформулированная задача - уже половина решения? почему вы не смогли четко сформулировать задачу? - дана таблица из трех полей (сумма, группа, оплата) - для каждой строки приближенно вычислить с округлением до заданной точности 10**N поле value по формуле trunc( сумма*оплата/(sum_по_группе(оплата)), N ) - для каждой группы вычислить невязку по формуле сумма-sum_по_группе(value) - для каждой группы добавить невязку группы к максимальному value в группе - вывести четыре поля (сумма, группа, оплата, value) Округление, на мой взгляд как раз наименее значимый пункт решения задачи. Меня интересует написание такого рода запросов как класса задач, что ли. А не конкретного алгоритма. Для того чтобы написать подобное для Oracle, человеку прочитавшему Т.Кайта, понадобилось бы не больше получаса. А в pg мне трудно пока придумать как решить что-то подобное просто и понятно. Надеялась что кто-нибудь сталкивался с похожими задачами расчетов. Вообщем, приношу свои извинения! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:56 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=35255771&tid=2004429]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
12ms |
get topic data: |
5ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 274ms |

| 0 / 0 |
