@pgsql

Страница 380 из 1062
Артур
27.06.2017
09:51:28
Кроме настройки lc_monetary он ничем не отличается от dec

Darafei
27.06.2017
09:51:31
decimal не пририсовывает знак доллара

Артур
27.06.2017
09:52:19
?ради этого тип отдельный?

Darafei
27.06.2017
09:52:22
gis=# select sin(10::decimal); sin ------------------- -0.54402111088937 (1 row) gis=# select sin(10::money); ERROR: function sin(money) does not exist LINE 1: select sin(10::money); ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.

Google
Артур
27.06.2017
09:53:11
Ясно чтобы синусоиду при операции с ден. средствами не заюзать :)

Ну вот просто dec и float разница понятна. И тут вопросов 0. Money по своей сути получается украшательство

Я правильно понял?

Darafei
27.06.2017
09:55:22
money в постгресе недоделанный, он по хорошему должен бы ещё валюту в себе содержать и не разрешать складывать два поля с разной валютой

тот же самый вид недоделанности, как в нативном point недостаток srid (в отличие от postgis geometry) - у тебя есть точка, но нет описания пространства

Alex
27.06.2017
09:56:57
а кто в чем деньги хранит ?

Артур
27.06.2017
09:57:05
Получается они зарелизили тип, но потом доделают.

Alex
27.06.2017
09:57:23
а то отдельные эстеты утверждают что надо хранить в NUMERIC(18,2)

а не в decimal

Артур
27.06.2017
09:57:54


Alex
27.06.2017
09:58:25
Это я знаю )

just ask

Dmitry
27.06.2017
09:59:46
Найди 10 отличий )))

Google
Alex
27.06.2017
10:00:11
Меня больше разрядность хранения после точки интересует

Так как, некоторые утверждают что надо хранить 5 знаков после запятой, меньше вероятность расхождения в 1 коп/цент

Артур
27.06.2017
10:02:09
Найди 10 отличий )))
Согласно доке стандарта SQL - они идентичны



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

ато 10*0.5 = может получиться 4.9999

И потом пример расхождения в 1 копейку скажи

Dmitry
27.06.2017
10:07:16
Пишут, что нет разницы в ПГ https://www.postgresql.org/message-id/20211.1325269672@sss.pgh.pa.us

Артур
27.06.2017
10:08:58
Порылся в инете нарвался на тукую радость:

http://www.sql.ru/faq/faq_topic.aspx?fid=274

Возможно из-за совместимости и юзают Numeric

https://www.w3schools.com/sql/sql_datatypes_general.asp Но здесь разницы не делают

Dmitry
27.06.2017
10:10:57
http://www.sql.ru/faq/faq_topic.aspx?fid=274
А причём тут Firebird?

Артур
27.06.2017
10:11:30
там как раз разница есть между типами, может поэтому некоторые говорят "ОБЯЗАТЕЛЬНО ЮЗАЙТЕ NUM"

Darafei
27.06.2017
10:12:24
есть люди, читающие таблицы сверху вниз, и люди, читающие таблицы снизу вверх

Alex
27.06.2017
10:12:39
спс всем за ответы

Darafei
27.06.2017
10:12:46
кто какой пункт раньше нашёл, тот то и будет рекомендовать

Артур
27.06.2017
10:13:02
Для совместимости так сказать между бд. Хотя как @Komzpa ранее писал (если память мне не изменяет) , врят ли переезд с одной СУБД на другую будет беспроблемным, даже при соблюдении SQL стандартов.

Тогда обсуждали NOTNULL и IS NOT NULL, которые как оказалось тоже абсолютные синонимы

Google
Артур
27.06.2017
11:54:52
Вот еще СУПЕР вопрос ? по финансам. есть какие-то готовые схемы построения таблиц по мультивалютным операциям?

Anatoliy
27.06.2017
12:55:51
А помогите пожалуйста, что-то не могу придумать как сделать. Как сгруппировать строки, если их колонка (массив) пересекается? т.е. условие группировки – пересечение. При том что «aggregate functions are not allowed in GROUP BY», я попробовал через агрегационную функцию.

Anatoliy
27.06.2017
13:30:54
Это не эквивалент

Denis
27.06.2017
13:33:53
Почему? У вас есть колонка id и array. Технически при разложении массива array в строки вы получите возможность собрать id в группы. Но производительность будет плохая

Anatoliy
27.06.2017
13:34:46
в группы – равные элементу массива, а не в группу пересечений

Darafei
27.06.2017
13:36:18
в группировке ты должен по любым двум элементам понять, что они из одной группы

Anatoliy
27.06.2017
13:36:21
хотя

Anatoliy
27.06.2017
13:36:41
[1, 2 ,3] [2] [3]

то да

т.е. мне нужна группа из всех этих трех, потому что они пересекаются с первым

Darafei
27.06.2017
13:37:26
а [2], [1,2,3], [3]?

Anatoliy
27.06.2017
13:37:40
тоже

Denis
27.06.2017
13:38:08
А если ещё есть [3,4]?

Darafei
27.06.2017
13:38:22
в общем, тебе нужна кластеризация. её как таковой нет в SQL, в PostGIS ее городят через массивы и агрегации https://postgis.net/docs/manual-2.2/ST_ClusterWithin.html

ты не можешь по двум элементам [2] и [3] понять, что они уйдут в один кластер

Google
Anatoliy
27.06.2017
13:39:47
да, я врубился

Dmitry
27.06.2017
14:25:10
Я такое сделал рекурсивным запросом, недавно тут спрашивал

Точнее, сначала materialized view с unnest массивов, потом рекурсивный запрос который собирает всё в кластер

Anatoliy
27.06.2017
14:29:30
Круто, примером CTE поделишься?

Dmitry
27.06.2017
14:29:44
Тут по [2] через [1,2,3] вытазится и [3]

Admin
ERROR: S client not available

Артур
27.06.2017
14:29:47
ты не можешь по двум элементам [2] и [3] понять, что они уйдут в один кластер
то есть зря я делал сводные таблицы с простейшими полями. Можно было решить через массивы?

Dmitry
27.06.2017
14:30:05
Cte?

Anatoliy
27.06.2017
14:34:22
> рекурсивный запрос Ну я предположил что это with recursive

Dmitry
27.06.2017
14:34:59
Да

Anatoliy
27.06.2017
14:37:06
Ну это Common Table Expressions aka CTE

Dmitry
27.06.2017
14:38:23
А, я не силен в терминологии:) Запрос https://github.com/repology/repology/blob/master/repology/database.py самый последний

Anatoliy
27.06.2017
14:39:01
thx

Dmitry
27.06.2017
14:39:25
Там проекты объединяются по url'ам

Артур
27.06.2017
15:18:34
Есть документация на русском (желательно, но и на аглийском сойдет), как создать свое расширение на основе уже готовыз таблиц, процедур, вьюх?

Или раздавать как дамп?

Darafei
27.06.2017
15:33:27
экстеншен, он почти и есть дамп

blkmrkt
27.06.2017
16:24:59
а дело точно было не в RAID? :)
даже не знаю, я потом поверх этих же дисков новую ос установил и все ок, тесты и смарт тоже нормальные были

Inal
27.06.2017
16:50:52
Добрый вечер, коллеги Подскажите, пожалуйста, в какую сторону копать: в базе в ячейке типа JSONB хранится массив значений [{uuid:'...', value: 'foo'}, {uuid:'...', value: 'bar'}] Хочется вытащить все value в виде одной строки через запятую.

Ainar
27.06.2017
16:59:50
@kardanovir select string_agg(a.a->>'value', ',') from (select jsonb_array_elements(('[{"value":1},{"value":2}]'::jsonb))) as a(a);

Google
Ainar
27.06.2017
17:00:42
https://www.postgresql.org/docs/9.6/static/functions-json.html

Inal
27.06.2017
17:02:28
Спасибо!

/dev/null
28.06.2017
03:15:08
здаров

есть кто живой?

собрал такой запрос select number_nar, full_name, date_open_nar, date_close_nar, vrach_ortoped, vrach_technic, sum from (j_nar left join j_patient on j_nar.id_patient = j_patient.id) WHERE date_close_nar is not null

который выводит



Нужно посчитать количество рабочих дней между date_open_nar и date_close_nar и вывести их после sum

помогите пожалуйста

Как собрать запрос.

Александр
28.06.2017
03:28:13
В psql вроде есть, age засунь в него

типа age(date_close_nar, date_open_nar)

он должен выдать тебе промежуток

Т.е. кол-во дней между этими датами

age(timestamp, timestamp) interval Subtract arguments, producing a "symbolic" result that uses years and months, rather than just days age(timestamp '2001-04-10', timestamp '1957-06-13') 43 years 9 mons 27 days

Страница 380 из 1062