powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Разница SQL синтаксиса в MSSQL и Oracle
25 сообщений из 125, страница 5 из 5
Разница SQL синтаксиса в MSSQL и Oracle
    #39173967
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakэто ты разработчиков оракл перешедших на постгресс не наблюдал. Душераздирающее зрелище.
Разработчики, переходящие куда-либо с оракла - вообще душераздирающее зрелище. Спускаться тяжело, постоянное ощущение, что попал в каменный век.
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39173972
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerIvan Durakэто ты разработчиков оракл перешедших на постгресс не наблюдал. Душераздирающее зрелище.
Разработчики, переходящие куда-либо с оракла - вообще душераздирающее зрелище. Спускаться тяжело, постоянное ощущение, что попал в каменный век.
причем это ощущение есть внутренне свойство психики и совершенно не зависит на самом деле откуда и куда переходишь. Хоть с аксесса, хоть с фокспро
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39173982
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durakпричем это ощущение есть внутренне свойство психики и совершенно не зависит на самом деле откуда и куда переходишь. Хоть с аксесса, хоть с фокспро
Ошибаетесь. Очень даже зависит. Когда поднимаешься, ощущение совсем другое: "Вау, а я-то с этим мучился... блин, а вон там-то я для этого велосипеды творил, а здесь из коробки гораздо лучше..."
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39174036
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerОшибаетесь. Очень даже зависит. Когда поднимаешься, ощущение совсем
другое: "Вау, а я-то с этим мучился... блин, а вон там-то я для этого велосипеды творил, а
здесь из коробки гораздо лучше..."
Ни разу такого не видел. Обычно бывает наоборот: "А где возможность Х? А как сделать Y к
которому я привык? Что, совсем никак?.."
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39176567
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знал, что в MS SQL с аналитическими функциями не фонтан...
https://habrahabr.ru/post/276835/
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39176626
Andrey Sribnyak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender,

А ничего, что там обсуждается версия базы данных восьмилетней давности?

и там есть нормальное решение под более новую версию https://habrahabr.ru/post/276835/#comment_8776059
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39176683
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey Sribnyak,

ну я его и предложил и оно не нормальное, а костыльное...

Andrey SribnyakА ничего, что там обсуждается версия базы данных восьмилетней давности?и кстати, по-моему не уметь в 2008 lead/lag - уже само по себе плохо...
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39177426
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderAndrey Sribnyak,

ну я его и предложил и оно не нормальное, а костыльное...

Andrey SribnyakА ничего, что там обсуждается версия базы данных восьмилетней давности?и кстати, по-моему не уметь в 2008 lead/lag - уже само по себе плохо...
плохо. Бесспорно. Хорошо, что сейчас не 2008
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39177441
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durak,

Ignore nulls и сейчас нет...
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39177561
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtenderAndrey Sribnyak,

ну я его и предложил и оно не нормальное, а костыльное...

Andrey SribnyakА ничего, что там обсуждается версия базы данных восьмилетней давности?и кстати, по-моему не уметь в 2008 lead/lag - уже само по себе плохо...
есть такая мысль, что т.н. аналитические ф-ции в sql -- это всё довольно печально.
я бы сказал -- медленно и печально.
и покрывает очень малую область. и на каждый чих нужно еще доп слова в конструкцию. которые оракел всё вводит и вводит. и конца не видно. (остальные отстают, да)

т.е. что-то вместо них нужно, прозрачное этакое, но не ясно что
нет хороших идей по конструкциям языка. ну нет.
а всё, что порождено в недрах ара-кала -- всё скорее левое, чем с правой резьбой. евпочя
всё имхо, ессно.


последнее из приятного в sql было lateral -- вот с ним как-то удачно сложилось. очень sql-но. не знаю, кто его изобрел, но если ара-калоеды -- респект. и, не побоюсь этого слова, даже уважуха.
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39177599
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этта,

согласно стандарту спецификация оконных функций такая

Код: plaintext
1.
FUNCTION_NAME(expr) OVER {window_name|(window_specification)} 
window_specification ::= [window_name][partitioning][ordering][framing] 

к сожалению не все СУБД поддерживают именованные окна, поэтому приходится каждый раз описывать спецификацию окна

Код: sql
1.
2.
3.
4.
5.
6.
SELECT 
  emp_no, 
  dept_no, salary, 
  avg(salary) over (partition by dept_no),
  sum(salary) over (partition by dept_no) 
FROM employee; 



вместо
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT 
  emp_no, 
  dept_no, 
  salary, 
  avg(salary) over w,
  sum(salary) over w  
FROM employee 
WINDOW w as (partition by dept_no); 



второй запрос выглядит покрасивше и лаконичней особенно если спецификация окна сложная. Что касается скорости, то согласен работает не очень шустро.

ЕМНИП lateral пришёл из sybase asa
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178475
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаесть такая мысль, что т.н. аналитические ф-ции в sql -- это всё довольно печально.
я бы сказал -- медленно и печально.
и покрывает очень малую область. и на каждый чих нужно еще доп слова в конструкцию. которые оракел всё вводит и вводит. и конца не видно. (остальные отстают, да)
не согласен. Область применения очень и очень обширна. Они пришли на смену курсорам - вот которые и есть на самом деле инородная вещь не вписывающаяся в дух sql и операций над множествами.
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178537
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ivan Durakэттаесть такая мысль, что т.н. аналитические ф-ции в sql -- это всё довольно печально.
я бы сказал -- медленно и печально.
и покрывает очень малую область. и на каждый чих нужно еще доп слова в конструкцию. которые оракел всё вводит и вводит. и конца не видно. (остальные отстают, да)
не согласен. Область применения очень и очень обширна. Они пришли на смену курсорам - вот которые и есть на самом деле инородная вещь не вписывающаяся в дух sql и операций над множествами.в том то и собака порылась, что они не пришли на смену курсорам, а декларативно пыжатся описать некие подклассы работы с курсорами в pl/sql . Т.е. просмотр вперёд и назад при фетче вдоль. Но и пыжатся плохо. мощности и выразительности мало, а слов лишних требуется (как всегда у оракла) до хера. И всё время где--то рыбу заворачивают (как с роунамом вместо лимита/"фёстом", который даже не фёст -- а лишние слова в кучку типа "кип-что-то-нах" -- вместо того же лимита, и т.п, и т.д. тьху на них 100500 раз слюной ).

я не говорю, что для этого слова не нужны . нужны, но другие, более мощные и ёмкие. А у оракла традиционно какие-то безъязыкие математиксы синтакс генерят. том наверное, небезызвестный, за которого тыщщи индусов ответы на асктоме постят.
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178587
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттакак с роунамом вместо лимитав 12c добавили такой синтаксический сахар причем шире чем обычный лимит - https://oracle-base.com/articles/12c/row-limiting-clause-for-top-n-queries-12cr1

эттав кучку типа "кип-что-то-нах" -- вместо того же лимитаkeep и limit это из разных опер.

эттая не говорю, что для этого слова не нужны . нужны, но другие, более мощные и ёмкиеperl/ruby/golfscript уж на что емкие и мощные, только потом плюются на их однострочники
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178622
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender<>
эттав кучку типа "кип-что-то-нах" -- вместо того же лимитаkeep и limit это из разных опер.<>вот да. получение "ферста" кипом -- явное психическое заболевание изобрёвов оного синтакса. все эти задачи, как и прочие, т.е. не только эти -- нормально решаются лимитом ---... ORDER BY LIMIT 1 .

вообще всё, что "интерфейсы" (а язык -- частный случай интерфейса) - у оракла традиционно не в красную армию. кто всякие нетки дбки и т.п. видел -- тот в цырке не смейотса. А уж ора--формс специально надо было выдумать, чтобы всем показывать, как не надо делать. и чтобы задать абсолют на шкале ужасов.
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178625
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттавот да. получение "ферста" кипом -- явное психическое заболевание изобрёвов оного синтаксане надо путать... никто keep'ом не получает лимит.
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178644
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вкратце, то что limit
Код: sql
1.
ORDER BY column_1 LIMIT 100 , 40


в оракле сейчас такое:
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178648
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но вообще, если речь не о TOP как в MS SQL, а о пейджинге, то в идеале лучше использовать курсоры двунаправленные
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178649
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtenderэттавот да. получение "ферста" кипом -- явное психическое заболевание изобрёвов оного синтаксане надо путать... никто keep'ом не получает лимит.

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

кипом получают т.н. "фёрст" , (слово отсутствует в языке напрочь, но в отсылках с форума, как и в ртфм--овом бреде на ара кальном сайте -- найти можно. с трудом.)

тот же "фёрст" нормальные люди получают лимитом -- как побочка стандартного подхода без лишних слов типа "кип денс ранка" и что--то там ещё. а вот в старых ара--калах это (добыть фёрст роунамом) было затруднительно -- из за необходимости передать поле на пару уровней глубже, ан эти дятлы (индусы, якобы) алиас так глубоко передавать запретили -- это стандартная проблема иногородних в ара--кале.
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178685
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттакипом получают т.н. "фёрст"мдаа... говорю же, что-то у вас все перепутано.
keep:
Код: sql
1.
2.
3.
4.
5.
6.
select 
  a
 ,max(b)
 ,max(c) keep(dense_rank first order by b) "Макс. С среди строк с максимальным B"
from t
group by t.a


А лимит делался через либо через rownum, либо через row_number/rank/dense_rank/ntile + over:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select
from (select
          t.*
        , dense_rank() over(order by t.c) drnk
        , rank()       over(order by t.c) rnk
        , row_number() over(order by t.c) rn
        , ntile(100)   over(order by t.c) nt
      from t
)
where -- выбираем что хотим:
  -- drnk <= 10 - топ 10 значений + "with ties"
  -- rnk  <= 10 - топ 10 + "with ties"
  -- rn   <= 10 - строго топ 10 строк - аналог limit 0,10
  -- nt   <= 5 - топ 5%

в этом случае еще и можно добавить partition by ... - тогда топы будут для каждой группы.

Очевидно же что так возможностей больше, чем просто limit?
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178712
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderесли вкратце, то что limit
Код: sql
1.
ORDER BY column_1 LIMIT 100 , 40


в оракле сейчас такое:


эта реализация в оракле соответствует стандарту
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178732
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

да и у MS SQL практически так же: https://technet.microsoft.com/en-us/library/ms188385(v=sql.110).aspx
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
ORDER BY order_by_expression
    [ COLLATE collation_name ] 
    [ ASC | DESC ] 
    [ ,...n ] 
[ <offset_fetch> ]


<offset_fetch> ::=
{ 
    OFFSET { integer_constant | offset_row_count_expression } { ROW | ROWS }
    [
      FETCH { FIRST | NEXT } {integer_constant | fetch_row_count_expression } { ROW | ROWS } ONLY
    ]
}
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178773
этта
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtenderэттакипом получают т.н. "фёрст"мдаа... говорю же, что-то у вас все перепутано.
keep:
Код: sql
1.
2.
3.
4.
5.
6.
select 
  a
 ,max(b)
 ,max(c) keep(dense_rank first order by b) "Макс. С среди строк с максимальным B"
from t
group by t.a




это у вас все перепутано

Код: sql
1.
2.
3.
4.
5.
6.
select 
  a
 ,max(b)
 , (SELECT c FROM t t1 WHERE t1.a= t.a ORDER BY t1.b DESC [...,c desc ] LIMIT 1) с
from t
group by t.a


-- не надо никакой путаницы "агрегатов" с, на деле, -- как правило -- индексным seek.
+ на мн--во полей распространяется примитивным lateral.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT 
 a
 ,b
 ,c
FROM 
(select 
  DISTINCT a
from t)  t-- заменить вообще на выборку из источника FK? ,tp dczrjuj chfyjuj  group by-f
,LATERAL 
  (SELECT b, c [,..........] FROM t t1 WHERE t1.a= t.a ORDER BY t1.b DESC [,...] LIMIT 1) foo
            -- "единственный, один и тот же ROW  среди всех строк с максимальным B"



Всё делается одним и тем же стандартным образом. никаких грёбанных лишних слов не надо. особенно -- из области ораклового же окнизма-агрегатизма -- т.е. синтасического идиотизма в запредельно запущенном виде. что отчасти простительно лишь потому, что внятной альтернативы пока нет.
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39178785
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эттаэто у вас все перепутано

Код: sql
1.
2.
3.
4.
5.
6.
select 
  a
 ,max(b)
 , (SELECT c FROM t t1 WHERE t1.a= t.a ORDER BY t1.b DESC [...,c desc ] LIMIT 1) с
from t
group by t.a

что за дурь? скалярные подзапросы от аналитики отличаем вообще? да еще и многократное обращение к таблице...

этта-- не надо никакой путаницы "агрегатов" с, на деле, -- как правило -- индексным seek.такую жесть даже комментировать не хочется...
этта+ на мн--во полей распространяется примитивным lateral.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT 
 a
 ,b
 ,c
FROM 
(select 
  DISTINCT a
from t)  t-- заменить вообще на выборку из источника FK? ,tp dczrjuj chfyjuj  group by-f
,LATERAL 
  (SELECT b, c [,..........] FROM t t1 WHERE t1.a= t.a ORDER BY t1.b DESC [,...] LIMIT 1) foo
            -- "единственный, один и тот же ROW  среди всех строк с максимальным B"

еще один селфджойн... тупо жесть...
Ну и в оракле такую же муть тоже можно сделать, и lateral там тоже есть. и умеет джойны в lateral разворачивать
...
Рейтинг: 0 / 0
Разница SQL синтаксиса в MSSQL и Oracle
    #39179976
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этта,

я смотрю все совсем печально? вместо аргументации какая-то дурь из тебя лезет, да еще и опять же не понимаешь, даже то о чем пишешь... ну и к слову, я указывал что идеальным вариантом был бы вариант реализации INDEX SKIP SCAN с проходом по бранчам + stopkey, но этого пока нет ни в одной из СУБД, так что опять же к ораклу тут претензий никаких нет. В postgresql насколько я знаю index skip scan'a вообще нет
...
Рейтинг: 0 / 0
25 сообщений из 125, страница 5 из 5
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Разница SQL синтаксиса в MSSQL и Oracle
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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