Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не чревата чем нибудь такая реализация? / 7 сообщений из 7, страница 1 из 1
09.06.2015, 17:22
    #38980370
vadipok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не чревата чем нибудь такая реализация?
Добрый вечер уважаемы гуру.

Подскажите плиз, такая реализация не чревата какими ни будь ошибками?
настораживает, то что 2 селекта идет с одного и того же места temp.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE TABLE portal.tempCorelation AS
WITH temp(nskv, gid, zak, Dat, Gor, X, Y) AS (
	SELECT TRIM(a.nskv) as nskv,
	       a.Gid/a.Dni as gid,
	       a.Zak/a.Dni as zak,
	       a.Dat,
	       a.Gor,
	       b.X,
	       b.Y
	  FROM portal.abdr a
	       INNER JOIN portal.abdadr b ON TRIM(b.nskv) = TRIM(a.nskv)
	 WHERE EXTRACT(YEAR FROM a.Dat) between 2014 AND 2015
	       AND a.Dni != 0 
)
SELECT d.nskv, 
       z.nskv as nskvZ, 
       d.gid, 
       z.zak, 
       TRUNC(SQRT((d.x-z.x)*(d.x-z.x)+(d.y-z.y)*(d.y-z.y))) as d,
       TRUNC(ACOS((z.x-d.x)/(SQRT((z.x-d.x)*(z.x-d.x)+(z.y-d.y)*(z.y-d.y))))*180/PI())+(CASE WHEN (z.y-d.y) < 0 THEN 180 ELSE 0 END) as alpha
  FROM temp d,
       temp z 
 WHERE (d.x-z.x)*(d.x-z.x)+(d.y-z.y)*(d.y-z.y) between 1 and 1000*1000
       AND d.Dat = z.Dat
       AND d.Gor = z.Gor
       AND exists (SELECT 1 FROM portal.abddobg d1 WHERE TRIM(d.nskv) = TRIM(d1.nskv))
       AND exists (SELECT 1 FROM portal.abdzak z1 WHERE TRIM(z.nskv) = TRIM(z1.nskv))
       AND d.gid > 0
       AND z.zak > 0
ORDER BY d.nskv, z.nskv;
...
Рейтинг: 0 / 0
09.06.2015, 17:35
    #38980385
p2.
p2.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не чревата чем нибудь такая реализация?
vadipokни будь ошибкамиНо, стоит нам только взять телескоп и посмотреть вооружённым глазом, то мы увидим две звёздочки, три звёздочки, четыре звёздочки… Лучше всего, конечно, пять звёздочек!
...
Рейтинг: 0 / 0
09.06.2015, 17:49
    #38980398
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не чревата чем нибудь такая реализация?
p2.vadipokни будь ошибкамиНо, стоит нам только взять телескоп и посмотреть вооружённым глазом, то мы увидим две звёздочки, три звёздочки, четыре звёздочки… Лучше всего, конечно, пять звёздочек!
но автор таки правильно опасается.
оракел конкретно падал ронял сессию в ора 600, при попытке самозаджойнить CTE из пайплайновой функции (с объектными полями SDO_GEOM...) саму на себя. что то про мемори мап сообщал. Приходилось 2 сте делать. 2,Карл. Одинаковых, Карл

2 ТС: постгрес в таком поведении пока не замечен (в нем более другие баги)
...
Рейтинг: 0 / 0
10.06.2015, 08:01
    #38980666
vadipok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не чревата чем нибудь такая реализация?
qwwqp2.пропущено...
Но, стоит нам только взять телескоп и посмотреть вооружённым глазом, то мы увидим две звёздочки, три звёздочки, четыре звёздочки… Лучше всего, конечно, пять звёздочек!
но автор таки правильно опасается.
оракел конкретно падал ронял сессию в ора 600, при попытке самозаджойнить CTE из пайплайновой функции (с объектными полями SDO_GEOM...) саму на себя. что то про мемори мап сообщал. Приходилось 2 сте делать. 2,Карл. Одинаковых, Карл

2 ТС: постгрес в таком поведении пока не замечен (в нем более другие баги)

Спасибо!

Вчера нашел я конкретные баги. Вот и решил перестраховаться.
Поэтому пришлось делать два запроса.
Когда все делаю в одном, то аналитические функции выдают черт те знает что.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
CREATE TABLE portal.tempCorelation AS
WITH temp(nskv, gid, zak, Dat, Gor, X, Y) AS (
	SELECT TRIM(a.nskv) as nskv,
	       a.Gid/a.Dni as gid,
	       a.Zak/a.Dni as zak,
	       a.Dat,
	       a.Gor,
	       b.X,
	       b.Y
	  FROM portal.abdr a
	       INNER JOIN portal.abdadr b ON TRIM(b.nskv) = TRIM(a.nskv)
	 WHERE EXTRACT(YEAR FROM a.Dat) between 2014 AND 2015
	       AND a.Dni != 0 
)
SELECT d.nskv, 
       z.nskv as nskvZ, 
       d.gid, 
       z.zak, 
       TRUNC(SQRT((d.x-z.x)*(d.x-z.x)+(d.y-z.y)*(d.y-z.y))) as d,
       TRUNC(ACOS((z.x-d.x)/(SQRT((z.x-d.x)*(z.x-d.x)+(z.y-d.y)*(z.y-d.y))))*180/PI())+(CASE WHEN (z.y-d.y) < 0 THEN 180 ELSE 0 END) as alpha
  FROM temp d,
       temp z 
 WHERE (d.x-z.x)*(d.x-z.x)+(d.y-z.y)*(d.y-z.y) between 1 and 1000*1000
       AND d.Dat = z.Dat
       AND d.Gor = z.Gor
       AND exists (SELECT 1 FROM portal.abddobg d1 WHERE TRIM(d.nskv) = TRIM(d1.nskv))
       AND exists (SELECT 1 FROM portal.abdzak z1 WHERE TRIM(z.nskv) = TRIM(z1.nskv))
       AND d.gid > 0
       AND z.zak > 0
ORDER BY d.nskv, z.nskv;

--drop table portal.tempCorelation;
--drop table portal.tempCorelation2;


CREATE TABLE portal.tempCorelation2 AS
SELECT t.nskv, 
       t.nskvZ, 
       t.gid, 
       t.zak, 
       avg(t.numGid) OVER (PARTITION BY t.nskv, t.nskvZ, t.rankGid) as rankGid,
       count(1) OVER (PARTITION BY t.nskv, t.nskvZ, t.gid) as lx,
       avg(t.numZak) OVER (PARTITION BY t.nskv, t.nskvZ, t.rankZak) as rankZak,
       count(1) OVER (PARTITION BY t.nskv, t.nskvZ, t.zak) as ly,
       t.d,
       t.alpha
  FROM (SELECT *,
               row_number() OVER (PARTITION BY nskv, nskvZ ORDER BY gid) as numGid,
               rank() OVER (PARTITION BY nskv, nskvZ ORDER BY gid) as rankGid,
               row_number() OVER (PARTITION BY nskvZ, nskv ORDER BY zak) as numZak,
               rank() OVER (PARTITION BY nskv, nskvZ ORDER BY zak) as rankZak
          FROM portal.tempCorelation) t
ORDER BY t.nskv, 
	 t.nskvZ, 
	 t.zak;
...
Рейтинг: 0 / 0
10.06.2015, 08:20
    #38980674
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не чревата чем нибудь такая реализация?
vadipok<>

Вчера нашел я конкретные баги. Вот и решил перестраховаться.
<>
какбе "вот это сейчас было -- очень обидно"

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

я так думаю
...
Рейтинг: 0 / 0
10.06.2015, 08:35
    #38980679
vadipok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не чревата чем нибудь такая реализация?
qwwqvadipok<>

Вчера нашел я конкретные баги. Вот и решил перестраховаться.
<>
какбе "вот это сейчас было -- очень обидно"

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

я так думаю
не надо оскорблений.
Можно было просто попросить, я человек отзывчивый.
Смысл в том что нужно сделать обычные ранги по полю gid. + там где повторяется, эти ранги сложить и разделить на количество повторений.
Тоесть
nskv nskvz gid rank1 2 0.5 11 2 1 21 2 2 3.51 2 2 3.5
...
Рейтинг: 0 / 0
10.06.2015, 08:37
    #38980682
vadipok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не чревата чем нибудь такая реализация?
Когда все делал в одном запросе получалась такая херня(примерно, точные цифры не помню)
nskv nskvz gid rank1 2 0.5 41 2 1 81 2 2 12.51 2 2 12.5
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Не чревата чем нибудь такая реализация? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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