Войти
ПрограммированиеФорумОбщее

SQL DATABASE (6 стр)

Страницы: 15 6 7 818 Следующая »
#75
(Правка: 10:54) 10:41, 2 фев 2023

skalogryz
> НО, в итоге выяснилось, что в "sql" синтаксисе объявить локальные переменные
> нельзя, в "plPgSQL" можно.
> + Показать
> но синтаксис разный, и по-этому придёться учить и то и то.
Вроде понял.

Ну пользуйся только PL/pgSQL - и тогда не придётся иметь проблем с локальными переменными, и не нужно будет учить языки, которыми не пользуешься.

skalogryz
> не согласен насчёт "махрового легаси"... было бы так, что MS SQL 2022 бы не
> выходил.
Очевидно же, что он выходит для того махрового легаси, которое никто не будет переписывать с нуля, но к которому всё ещё дописывают новые фичи и фиксят старые - тогда переход на новую версию убожества позволит использовать "новые" возможности движка в новом коде, при этом не ломая гигабайты старого.

skalogryz
> Так что, конторы, у которых есть бабло, могут выбрать.
Могут выбирать между неправильными ответами и постгресом.

Повторяю ключевую мысль ещё раз. Когда ты, в начале нового проекта, выбираешь MS SQL - у тебя есть вполне реальный шанс впоследствии об этом пожалеть, в форме: «как жаль, что в MS SQL этой фичи нет, вот если бы мы взяли PostgreSQL - мы бы просто взяли и решили эту задачу, а с MS SQL - придётся костылить и выкручиваться». А в случае PostgreSQL, этот сценарий гораздо менее вероятен, потому что если какой-то возможности в нём нет - скорее всего, её нет вообще ни у кого.

#76
11:38, 2 фев 2023

Dieseluga
> SELECT ISNULL(p.name, ''), SUM(o.sum)
> FROM Operation AS o
> LEFT JOIN Partner as p
> ON o.id_part = p.id_part
> GROUP BY p.name;
верно.
но SELECT ISNULL(p.name, '') конструкция не очевидна по учебнику
обычно select(names) from (tables-names)
ну и добавить именования .имена. .сумма. SELECT ISNULL(p.name, '') as names, SUM(o.sum) as summa
обозвать колонки
вообще имелось ввиду записать стандартно select from where having group order без спец моментов выкрутасов

#77
12:17, 2 фев 2023

Да взять хоть тот же NULLS LAST. MS SQL предоставляет хоть что-нибудь взамен, что могло бы скомпенсировать отсутствие этого функционала и оправдать его выбор для нового проекта?

#78
12:25, 2 фев 2023

Имбирная Ведьмочка
> MS SQL предоставляет хоть что-нибудь взамен

Я же показал в #70, как это можно сделать почти в любом диалекте SQL. Результат конструкции CASE WHEN может быть использован как более приоритетный фактор упорядочивания.

А непосредственно в MSSQL можно эту конструкцию завернуть в свою пользовательскую функцию.

#79
12:32, 2 фев 2023

Rikk
> конструкция не очевидна по учебнику

Ты инженер или нет? Инженер должен уметь простые закономерности/правила, написанные в учебниках, комбинировать в сложное требуемое поведение.

#80
13:05, 2 фев 2023

Dmitry_Milk
> Инженер должен
в мире так много вещей что всего знать нельзя=лопнешь изучать и заезжать интеллектом в тему.
Dmitry_Milk
> комбинировать в сложное требуемое поведение.
даже глубокие профи спотыкаются. певец возьмет фальшивую ноту, у хирурга задрожит рука,и тд..
и таки эта забитая фраза - высшая школа учит не вызубривать а пользоваться ресурсами найти чего требуется в каком то месте(инфо по теме). ресурс я нашел(учебник).темы отработал(лекции+упражнения). но пара не явных моментов не по стандарту затык.и это is null вворачивать в нужную обертку- вовсе не очевидно.

#81
13:30, 2 фев 2023

Rikk
> певец возьмет фальшивую ноту, у хирурга задрожит рука

Музыка и медицина - великолепные примеры инженерной деятельности :)

#82
13:32, 2 фев 2023

О чем вы говорите, в PostgreSQL нет даже элементарных (и что более важно - лаконичных) IF и IFNULL, и приходится обмазываться CASE портянкой и громоздким COALESCE.

#83
13:38, 2 фев 2023

entryway
> громоздким COALESCE

Чем он громоздкий? Тем, что на две буквы длиннее? :)

#84
(Правка: 13:53) 13:46, 2 фев 2023

Dmitry_Milk
Длиннее, неудачное название для 99% случаев использования. COALESCE наверное везде есть, где есть IFNULL.

#85
(Правка: 14:14) 14:10, 2 фев 2023

entryway
> О чем вы говорите, в PostgreSQL нет даже элементарных (и что более важно -
> лаконичных) IF и IFNULL, и приходится обмазываться CASE портянкой и громоздким
> COALESCE.

IF(a, b, c)
CASE WHEN a THEN b ELSE c END

IFNULL(a, b)
COALESCE(a, b)

Ну-ну, ты ещё скажи, что тебя begin/end в паскале заставляют тратить лишние 2 дня на реализацию очередной фичи.

Dmitry_Milk
> Я же показал в #70, как это можно сделать почти в любом диалекте SQL.
Троллейбус из буханки же.

Ну вернее, если ты изначально в безвыходной ситуации - когда на руках 15 гигабайт легаси, а фичу надо сделать уже вчера - тут да, можно закостылить.

Но для нового проекта - хотелось бы всё-таки предотвратить такие ситуации заранее.

Dmitry_Milk
> Музыка и медицина - великолепные примеры инженерной деятельности :)
Надо тогда хотя бы композитора брать. Прочитал учебник, поставил ноты по учебнику - збс трек, можно идти получать награды. :)

#86
(Правка: 14:20) 14:15, 2 фев 2023

Имбирная Ведьмочка
Ты выше чуть ли не предлагал делать выбор в пользу PostgreSQL из-за ORDER BY p.name NULLS LAST, как будто с этим у кого-то есть какие-то проблемы. Почему бы мне в том же духе не ляпнуть?

#87
14:15, 2 фев 2023

Иф-кейс там, кстати, не нужен, можно же сразу сортировать результат в булах:
ORDER BY (p.name IS NULL) DESC, p.name

#88
14:35, 2 фев 2023

entryway
Ну ладно, давай ещё немного фич:

- встроенные типы для геометрических объектов;

- BVH-индексы для встроенных типов геометрических объектов;

- индексы для выражений (CREATE INDEX ON foobar (length(name) + 1));

- индексы для жисонов: CREATE INDEX ON foobar (metadata) USING gin ускоряет запрос SELECT * FROM foobar WHERE metadata ? 'meta_key', который возвращает все строчки, в которых metadata на топ-уровне содержит поле с ключом "meta_key";

- INSERT INTO foobar (key, value) VALUES ("a", "b") ON CONFLICT (key) DO UPDATE SET value = value || ',' || excluded.value.

Этого достаточно, чтобы оправдать две лишние буквы в COALESCE?

#89
14:37, 2 фев 2023

надо было просто подать решение задачи и все.
а вы флейм устроили

Страницы: 15 6 7 818 Следующая »
ПрограммированиеФорумОбщее