Вход | Регистрация
 
Информационные технологии :: Администрирование

Нужен нормальный самоучитель по SQL. Посоветуйте, пожалуйста.

Нужен нормальный самоучитель по SQL. Посоветуйте, пожалуйста.
Я
   Владимир1С
 
10.04.19 - 14:32
Читаю разные самоучители из инета. Попробовал решить простенькую задачку : Таблица(сотрудник, зарплата, начальник-ссылка на эту же таблицу, номер_отдела), надо вывести сотрудников с максимальной зарплатой в каждом отделе и номер_отдела.
Как найти такого в определённом отделе, не вопрос. А как сделать это для всех отделов, записанных в отделах - не пойму. Похоже, инета явно недостаточно для обучения.

Поэтому вопрос: какой самоучитель лучше, по мнению Гуру SQL?
 
 
   Владимир1С
 
1 - 10.04.19 - 14:35
записанных в таблице
   Cyberhawk
 
2 - 10.04.19 - 14:37
На 1С такое сделать тоже испытываешь трудности*
   Cyberhawk
 
3 - 10.04.19 - 14:37
?
   shuhard
 
4 - 10.04.19 - 14:37
(0)[инета явно недостаточно для обучения]
бред
   sqr4
 
5 - 10.04.19 - 14:37
ДА вроде тут sql не причем. РС Срез последних. вот тут уже делали нечто подобное
   sqr4
 
6 - 10.04.19 - 14:38
Кроме синтаксиса отличий не должно быть
   Владимир1С
 
7 - 10.04.19 - 14:39
(2)(5) Голый SQL, без 1C.
   sqr4
 
8 - 10.04.19 - 14:40
(7) Какая хер разница на каком языке запрос на русском или английском, переведи выбрать в select и делов то, замени ВТ на вложенность или как там я не спец
   trad
 
9 - 10.04.19 - 14:40
А нету никакого самоучителя, только практика. Писать и писать запросы.

Без понимания как это работает - никакие буквы не зайдут
А с пониманием - буквы не нужны
   1Сергей
 
10 - 10.04.19 - 14:41
Почитай про группировки в запросе. Гуглить надо уметь
   Cyberhawk
 
11 - 10.04.19 - 14:41
(7) Ну так сделай на 1С, затем переведи на язык скуля
   sqr4
 
12 - 10.04.19 - 14:41
(8) это имелось ввиду для конкретного случая с выборкой
   Sserj
 
13 - 10.04.19 - 14:41
(7) Большая разница, в SQL слишком много возможностей не реализованных в 1С.
   1Сергей
 
14 - 10.04.19 - 14:41
(11) Автор клюшечник
   sqr4
 
15 - 10.04.19 - 14:42
(13) я уточнил в (12)
   АНДР
 
16 - 10.04.19 - 14:42
   sqr4
 
17 - 10.04.19 - 14:43
http://sql-ex.ru/
Во да отличная вещь, правда я быстро к ней охладел
   Sserj
 
18 - 10.04.19 - 14:44
(15) Ну вот именно конкретно этот случай можно сделать классической группировкой, а можно выежнуться оконными функциями и в выежнутом случае на большой таблице будет ощутимый прирост проиозводительности так как они будут в несколько потоков лопатить.
   Владимир1С
 
19 - 10.04.19 - 14:45
(16)(17) Большое спасибо.
   fisher
 
20 - 10.04.19 - 14:51
Плюс за sql-ex.ru
Сам на нем учился, еще когда он по-другому назывался и не такой развесистый был. Там же была отличная справка по SELECT, которая как учебник канает. Задания очень удобно решать и проверять. При затыках можно на их форуме потолкаться, многие выкладывают свои решения.
   13_Mult
 
21 - 10.04.19 - 14:57
(16) + "sql-ex.ru" Давненько я туда не заходил )
   ptiz
 
22 - 10.04.19 - 15:04
(0) Я купил толстую книжку и читал в электричке (тогда интернет был так себе), очень помогло.
   МихаилМ
 
23 - 10.04.19 - 15:05
   fisher
 
24 - 10.04.19 - 15:22
Если сабжевую задачу решать для произвольной иерархии отделов, то это обычно через рекурсивные запросы решается (язык запросов 1С их не поддерживает). Также разные диалекты SQL обычно поддерживают некие аналоги одинэсовских ИТОГИ (в T-SQL - GROUP BY ROLLUP)
   Владимир1С
 
25 - 10.04.19 - 15:24
(24) То есть эта задача может быть решена только через рекурсивный запрос?
   fisher
 
26 - 10.04.19 - 15:45
(25) Разруливание иерархии лучше всего на рекурсию ложится. Иерархия плохо разруливается через обычные операции над множествами. Разрулить можно, но менее "красиво" и заложившись на какое-то максимальное количество уровней. Как вариант, можно использовать такой подход: http://catalog.mista.ru/public/158512/
   scanduta
 
27 - 10.04.19 - 15:51
(0) Я когда к сертификации MCSA  по MS SQL готовился ,читал рекомендуемую литературу, она довольна толковая, но на английском вся

https://www.microsoftpressstore.com/store/exam-ref-70-761-querying-data-with-transact-sql-9781509304332
   dmrjan
 
28 - 10.04.19 - 15:54
На примере PostgreSQL:
https://postgrespro.ru/education/courses/hacking
   fisher
 
29 - 10.04.19 - 15:58
(25) Перечитал сабжевую задачу - там не требуется получать результат в иерархии отделов. Т.е. никаких особых ухищрений не требуется.
   fisher
 
30 - 10.04.19 - 16:03
(25) Сабж решается либо коррелирующим запросом (более красивая конструкция), либо стандартной двухэтапной схемой:
1) во вложенном запросе с группировкой по отделу получаешь максимальные зарплаты по отделам
2) во внешнем запросе соединяешь вложенный запрос с исходной таблицей по отделу и максимальной зарплате.
В результате остаются только сотрудники с максимальными зарплатами в отделах
 
 
   dezss
 
31 - 10.04.19 - 16:15
(30) Конструкция может и красивая, но только эффективная ли?
   fisher
 
32 - 10.04.19 - 16:19
(31) Ты про коррелирующий подзапрос? Как правило, не менее эффективная. Не надо забывать, что SQL - это декларация требуемого результата, а не алгоритм его достижения. Ясен пень, что на практике не все так прекрасно, но простые коррелирующие подзапросы оптимизаторы запросов СУБД обычно разруливают вполне эффективно. Вплоть до идентичных планов выполнения с более эффективными на первый взгляд декларациями.
   vitkhv
 
33 - 10.04.19 - 16:21
(23) best of the best
   1Сергей
 
34 - 10.04.19 - 16:34
Мне в начале нулевых было достаточно MSDN и гугла для изучения скуля
   dezss
 
35 - 10.04.19 - 16:48
(32) Ну если так, то хорошо.
Просто когда-то читал, что они не очень быстры, так как коррелирующий запрос выполняется для каждой строки исходного запроса.
   Ёпрст
 
36 - 10.04.19 - 16:51
   Ёпрст
 
37 - 10.04.19 - 16:51
она же есть в электронном виде
   Владимир1С
 
38 - 10.04.19 - 16:52
(37) благодарю за ссылку!
   Ёпрст
 
39 - 10.04.19 - 16:53
у этого эе автора есть книжка по оконным функциям
   Владимир1С
 
40 - 10.04.19 - 17:05
(30) Ок.
   vi0
 
41 - 10.04.19 - 17:16
(39) вот такие советчики и отбивают охоту к учебе
какие нахрен оконные функции?
   vi0
 
42 - 10.04.19 - 17:20
(27) книга шикарная, автор книги шикарен, но это не то что просит в (0)
   vi0
 
43 - 10.04.19 - 17:21
(27) > но на английском вся
давно уже есть переведенная, но перевод плох
   vi0
 
44 - 10.04.19 - 17:24
(28) в (0) просит выбрать максимальную зп, ты ему внутреннюю архитектуру постгре советуеш
*смайлик стучащий головой об стену*
   Ёпрст
 
45 - 10.04.19 - 17:27
(41) Если ты с ними не знаком, это не значит что они не нужны.
   vi0
 
46 - 10.04.19 - 17:28
(45) ты читал вопрос в (0)? сам то используешь их в работе? сомневаюсь
   Ёпрст
 
47 - 10.04.19 - 17:29
(46) даже на 7.7 использовал, если что.
А автор спрашивал за литературу хорошую.
Чего не устраивает ?
   vi0
 
48 - 10.04.19 - 17:30
(47) а автора нулевой уровень если что
   Ёпрст
 
49 - 10.04.19 - 17:32
(48) И ? Прочитав книжку в (36) прочитает еще и книжку по оконным функциям потом, если желание будет.
По крайней мере, автор книги очень внятно всё излагает
   vi0
 
50 - 10.04.19 - 17:34
(49) не вали всё в кучу, не демотивируй
   Владимир1С
 
51 - 10.04.19 - 17:35
(48) Если что, каждый из нас , было время, какал и писял в штанишки. Научились же, теперь почти всегда штаны сухие. Надо продвигаться, изучать, применять.
   Sserj
 
52 - 10.04.19 - 17:37
(46) Я использую. К примеру аналог СрезПоследних через оконные функции работает на 30-40 процентов быстрее.
   vi0
 
53 - 10.04.19 - 17:37
(52) у автора в (0) вопрос по логике, а не по оптимизации
   vi0
 
54 - 10.04.19 - 17:38
(51) похоже вы нашли друг друга с епрстом
   Sserj
 
55 - 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/
   Владимир1С
 
56 - 10.04.19 - 18:10
(30) Заработал таки. Всем БольшоеСпасибо.ПробелЗаело.
   Sserj
 
57 - 10.04.19 - 18:28
(56)

Ну попробуй еще вот так:

SELECT
  сотрудник, номер_отдела, зарплата
FROM
  (select
    сотрудник
    , номер_отдела
    , зарплата
   RUNK() OVER (partition by  номер_отдела,сотрудник ORDER BY зарплата DESC) as [УровеньЗП]
  from
    Таблица
  ) as РанжированнаяЗП
WHERE
  УровеньЗП = 1
   vi0
 
58 - 20.04.19 - 06:49
(27) был неправ относительно этой книги
для новичка тоже очень подойдет
   OldCondom
 
59 - 20.04.19 - 19:31
Пол Нильсен. Большая и великолепная книжка. Я по ней настраивал первый сервер + там доходчиво все описано в плане запросов. Считаю эту книгу ТОП-1
   Конструктор1С
 
60 - 21.04.19 - 08:53
(7) всё то же самое, только имена операторов заменяешь на соответствующие им англоязычные.
ВЫБРАТЬ -> SELECT
ИЗ -> FROM
ГДЕ -> WHERE
(ЛЕВОЕ) СОЕДИНЕНИЕ -> (LEFT) JOIN
УПОРЯДОЧИТЬ ПО -> ORDER BY
СГРУППИРОВАТЬ ПО -> GROUP BY
   rphosts
 
61 - 21.04.19 - 09:28
(0) understartingSQL, очень рульная книжка. Для начала самый лучший книг


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.