|
Нужен нормальный самоучитель по SQL. Посоветуйте, пожалуйста. | ☑ | ||
---|---|---|---|---|
0
Владимир1С
10.04.19
✎
14:32
|
Читаю разные самоучители из инета. Попробовал решить простенькую задачку : Таблица(сотрудник, зарплата, начальник-ссылка на эту же таблицу, номер_отдела), надо вывести сотрудников с максимальной зарплатой в каждом отделе и номер_отдела.
Как найти такого в определённом отделе, не вопрос. А как сделать это для всех отделов, записанных в отделах - не пойму. Похоже, инета явно недостаточно для обучения. Поэтому вопрос: какой самоучитель лучше, по мнению Гуру SQL? |
|||
1
Владимир1С
10.04.19
✎
14:35
|
записанных в таблице
|
|||
2
Cyberhawk
10.04.19
✎
14:37
|
На 1С такое сделать тоже испытываешь трудности*
|
|||
3
Cyberhawk
10.04.19
✎
14:37
|
?
|
|||
4
shuhard
10.04.19
✎
14:37
|
(0)[инета явно недостаточно для обучения]
бред |
|||
5
sqr4
10.04.19
✎
14:37
|
ДА вроде тут sql не причем. РС Срез последних. вот тут уже делали нечто подобное
|
|||
6
sqr4
10.04.19
✎
14:38
|
Кроме синтаксиса отличий не должно быть
|
|||
7
Владимир1С
10.04.19
✎
14:39
|
(2)(5) Голый SQL, без 1C.
|
|||
8
sqr4
10.04.19
✎
14:40
|
(7) Какая хер разница на каком языке запрос на русском или английском, переведи выбрать в select и делов то, замени ВТ на вложенность или как там я не спец
|
|||
9
trad
10.04.19
✎
14:40
|
А нету никакого самоучителя, только практика. Писать и писать запросы.
Без понимания как это работает - никакие буквы не зайдут А с пониманием - буквы не нужны |
|||
10
1Сергей
10.04.19
✎
14:41
|
Почитай про группировки в запросе. Гуглить надо уметь
|
|||
11
Cyberhawk
10.04.19
✎
14:41
|
(7) Ну так сделай на 1С, затем переведи на язык скуля
|
|||
12
sqr4
10.04.19
✎
14:41
|
(8) это имелось ввиду для конкретного случая с выборкой
|
|||
13
Sserj
10.04.19
✎
14:41
|
(7) Большая разница, в SQL слишком много возможностей не реализованных в 1С.
|
|||
14
1Сергей
10.04.19
✎
14:41
|
(11) Автор клюшечник
|
|||
15
sqr4
10.04.19
✎
14:42
|
(13) я уточнил в (12)
|
|||
16
АНДР
10.04.19
✎
14:42
|
||||
17
sqr4
10.04.19
✎
14:43
|
http://sql-ex.ru/
Во да отличная вещь, правда я быстро к ней охладел |
|||
18
Sserj
10.04.19
✎
14:44
|
(15) Ну вот именно конкретно этот случай можно сделать классической группировкой, а можно выежнуться оконными функциями и в выежнутом случае на большой таблице будет ощутимый прирост проиозводительности так как они будут в несколько потоков лопатить.
|
|||
19
Владимир1С
10.04.19
✎
14:45
|
(16)(17) Большое спасибо.
|
|||
20
fisher
10.04.19
✎
14:51
|
Плюс за sql-ex.ru
Сам на нем учился, еще когда он по-другому назывался и не такой развесистый был. Там же была отличная справка по SELECT, которая как учебник канает. Задания очень удобно решать и проверять. При затыках можно на их форуме потолкаться, многие выкладывают свои решения. |
|||
21
13_Mult
10.04.19
✎
14:57
|
(16) + "sql-ex.ru" Давненько я туда не заходил )
|
|||
22
ptiz
10.04.19
✎
15:04
|
(0) Я купил толстую книжку и читал в электричке (тогда интернет был так себе), очень помогло.
|
|||
23
МихаилМ
10.04.19
✎
15:05
|
||||
24
fisher
10.04.19
✎
15:22
|
Если сабжевую задачу решать для произвольной иерархии отделов, то это обычно через рекурсивные запросы решается (язык запросов 1С их не поддерживает). Также разные диалекты SQL обычно поддерживают некие аналоги одинэсовских ИТОГИ (в T-SQL - GROUP BY ROLLUP)
|
|||
25
Владимир1С
10.04.19
✎
15:24
|
(24) То есть эта задача может быть решена только через рекурсивный запрос?
|
|||
26
fisher
10.04.19
✎
15:45
|
(25) Разруливание иерархии лучше всего на рекурсию ложится. Иерархия плохо разруливается через обычные операции над множествами. Разрулить можно, но менее "красиво" и заложившись на какое-то максимальное количество уровней. Как вариант, можно использовать такой подход: http://catalog.mista.ru/public/158512/
|
|||
27
scanduta
10.04.19
✎
15:51
|
(0) Я когда к сертификации MCSA по MS SQL готовился ,читал рекомендуемую литературу, она довольна толковая, но на английском вся
https://www.microsoftpressstore.com/store/exam-ref-70-761-querying-data-with-transact-sql-9781509304332 |
|||
28
dmrjan
10.04.19
✎
15:54
|
На примере PostgreSQL:
https://postgrespro.ru/education/courses/hacking |
|||
29
fisher
10.04.19
✎
15:58
|
(25) Перечитал сабжевую задачу - там не требуется получать результат в иерархии отделов. Т.е. никаких особых ухищрений не требуется.
|
|||
30
fisher
10.04.19
✎
16:03
|
(25) Сабж решается либо коррелирующим запросом (более красивая конструкция), либо стандартной двухэтапной схемой:
1) во вложенном запросе с группировкой по отделу получаешь максимальные зарплаты по отделам 2) во внешнем запросе соединяешь вложенный запрос с исходной таблицей по отделу и максимальной зарплате. В результате остаются только сотрудники с максимальными зарплатами в отделах |
|||
31
dezss
10.04.19
✎
16:15
|
(30) Конструкция может и красивая, но только эффективная ли?
|
|||
32
fisher
10.04.19
✎
16:19
|
(31) Ты про коррелирующий подзапрос? Как правило, не менее эффективная. Не надо забывать, что SQL - это декларация требуемого результата, а не алгоритм его достижения. Ясен пень, что на практике не все так прекрасно, но простые коррелирующие подзапросы оптимизаторы запросов СУБД обычно разруливают вполне эффективно. Вплоть до идентичных планов выполнения с более эффективными на первый взгляд декларациями.
|
|||
33
vitkhv
10.04.19
✎
16:21
|
(23) best of the best
|
|||
34
1Сергей
10.04.19
✎
16:34
|
Мне в начале нулевых было достаточно MSDN и гугла для изучения скуля
|
|||
35
dezss
10.04.19
✎
16:48
|
(32) Ну если так, то хорошо.
Просто когда-то читал, что они не очень быстры, так как коррелирующий запрос выполняется для каждой строки исходного запроса. |
|||
36
Ёпрст
10.04.19
✎
16:51
|
||||
37
Ёпрст
10.04.19
✎
16:51
|
она же есть в электронном виде
|
|||
38
Владимир1С
10.04.19
✎
16:52
|
(37) благодарю за ссылку!
|
|||
39
Ёпрст
10.04.19
✎
16:53
|
у этого эе автора есть книжка по оконным функциям
|
|||
40
Владимир1С
10.04.19
✎
17:05
|
(30) Ок.
|
|||
41
vi0
10.04.19
✎
17:16
|
(39) вот такие советчики и отбивают охоту к учебе
какие нахрен оконные функции? |
|||
42
vi0
10.04.19
✎
17:20
|
(27) книга шикарная, автор книги шикарен, но это не то что просит в (0)
|
|||
43
vi0
10.04.19
✎
17:21
|
(27) > но на английском вся
давно уже есть переведенная, но перевод плох |
|||
44
vi0
10.04.19
✎
17:24
|
(28) в (0) просит выбрать максимальную зп, ты ему внутреннюю архитектуру постгре советуеш
*смайлик стучащий головой об стену* |
|||
45
Ёпрст
10.04.19
✎
17:27
|
(41) Если ты с ними не знаком, это не значит что они не нужны.
|
|||
46
vi0
10.04.19
✎
17:28
|
(45) ты читал вопрос в (0)? сам то используешь их в работе? сомневаюсь
|
|||
47
Ёпрст
10.04.19
✎
17:29
|
(46) даже на 7.7 использовал, если что.
А автор спрашивал за литературу хорошую. Чего не устраивает ? |
|||
48
vi0
10.04.19
✎
17:30
|
(47) а автора нулевой уровень если что
|
|||
49
Ёпрст
10.04.19
✎
17:32
|
(48) И ? Прочитав книжку в (36) прочитает еще и книжку по оконным функциям потом, если желание будет.
По крайней мере, автор книги очень внятно всё излагает |
|||
50
vi0
10.04.19
✎
17:34
|
(49) не вали всё в кучу, не демотивируй
|
|||
51
Владимир1С
10.04.19
✎
17:35
|
(48) Если что, каждый из нас , было время, какал и писял в штанишки. Научились же, теперь почти всегда штаны сухие. Надо продвигаться, изучать, применять.
|
|||
52
Sserj
10.04.19
✎
17:37
|
(46) Я использую. К примеру аналог СрезПоследних через оконные функции работает на 30-40 процентов быстрее.
|
|||
53
vi0
10.04.19
✎
17:37
|
(52) у автора в (0) вопрос по логике, а не по оптимизации
|
|||
54
vi0
10.04.19
✎
17:38
|
(51) похоже вы нашли друг друга с епрстом
|
|||
55
Sserj
10.04.19
✎
17:40
|
(39) Именно книжку тоже давным дано искал, в итоге нашел того
Ицик Бен-Гана Microsoft SQL Server 2012 High-Performance T-SQL Using Window Functions Только в виде сайтика :) https://professorweb.ru/my/sql-server/window-functions/level1/ |
|||
56
Владимир1С
10.04.19
✎
18:10
|
(30) Заработал таки. Всем БольшоеСпасибо.ПробелЗаело.
|
|||
57
Sserj
10.04.19
✎
18:28
|
(56)
Ну попробуй еще вот так: SELECT сотрудник, номер_отдела, зарплата FROM (select сотрудник , номер_отдела , зарплата RUNK() OVER (partition by номер_отдела,сотрудник ORDER BY зарплата DESC) as [УровеньЗП] from Таблица ) as РанжированнаяЗП WHERE УровеньЗП = 1 |
|||
58
vi0
20.04.19
✎
06:49
|
(27) был неправ относительно этой книги
для новичка тоже очень подойдет |
|||
59
OldCondom
20.04.19
✎
19:31
|
Пол Нильсен. Большая и великолепная книжка. Я по ней настраивал первый сервер + там доходчиво все описано в плане запросов. Считаю эту книгу ТОП-1
|
|||
60
Конструктор1С
21.04.19
✎
08:53
|
(7) всё то же самое, только имена операторов заменяешь на соответствующие им англоязычные.
ВЫБРАТЬ -> SELECT ИЗ -> FROM ГДЕ -> WHERE (ЛЕВОЕ) СОЕДИНЕНИЕ -> (LEFT) JOIN УПОРЯДОЧИТЬ ПО -> ORDER BY СГРУППИРОВАТЬ ПО -> GROUP BY |
|||
61
rphosts
21.04.19
✎
09:28
|
(0) understartingSQL, очень рульная книжка. Для начала самый лучший книг
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |