Запросы в уроке: 00:35 select * from departments; 01:07 select * from employees where department_id in (30, 91, 100) ; 01:45 select * from departments where department_name in ('Purchasing', 'Executive', 'Finance') ; 02:21 select * from employees where department_id in ( select department_id from departments where department_name in ('Purchasing', 'Executive', 'Finance') ) ; 03:06 select * from employees where hire_date between '01.06.05' and '31.08.05' --where employee_id between 100 and 110 ; Не благодарите! :)
Если у кого-то есть вопросы по домашнему заданию, указанному в описании к данному видео, пишите здесь в комментариях или в нашей группе Телеграмм. Отвечу всем! Также, если пропустили, рекомендую посмотреть первую часть урока про фильтрацию строк в запросе select. Ссылка: ua-cam.com/video/OWSRLbj1afo/v-deo.html
1. Правильно ли я понял из предыдущих уроков, что если дело доходит до манипуляций с датами, то лучше Всегда! не полениться и использовать оператор TO_DATE, а не просто заключать в апострофы указываемые даты? Т.е., например, вместо '01.06.2005' всегда! лучше не полениться и написать TO_DATE('01.06.2005', 'dd.mm.yyyy') во избежание некорректной выгрузки? 2. Оператор BETWEEN понимает оба формата даты: '01.06.05' и '01.06.2005'? (год указан полностью и частично).
Глеб, 1. Если код пишите исключительно для себя и на других ПК не планируете его запускать, то можно и без TO_DATE. В остальных случаях, лучше с TO_DATE. 2. Тут дело не в BETWEEN. Дату распознает сама СУБД. Поэтому, если в обычном селекте вы можете использовать тот или иной формат, то эти же форматы указания даты будут допустимы и в BETWEEN .
Подзапросы - очень часто используются, поэтому важно их разобрать. Наверняка пригодится в дальнейшем.Если что-то не понятно - задавайте вопросы в нашей группе Телеграм. Насчет вывода нескольких полей. Это уже ближе к теме джойнов. В плейлисте данного курса есть соответствующие ссылки.
Максим, приветствую! Подскажите, пжл, почему не срабатывает запрос в ДЗ? В чем ошибка? SELECT * FROM employees WHERE manager_id IN (SELECT manager_id FROM departments WHERE location_id >= 2600); Все логично вроде: находим в таблице DEPARTMENTS айди всех менеджеров у кого LOCATION_ID >= 2600. Затем подставляем эти значения в оператор IN. Поле MANAGER_ID есть в обеих таблицах.
@@ExcelStore А не могли бы пояснить "почему именно department_id"? И почему не подходит manager_id? Этот параметр ведь есть в обеих таблицах и должен мочь выступать как связующее (общее) значение. Мне на этом этапе важно это понять, чтобы разобраться в принципе выбора или, наоборот, отсева полей, которые должны или не должны быть использованы в расчетах.
@@modest_handsome Там просто по условию задачи звучит: "...все строки, LOCATION_ID департамента которых...". Т.е. явно сказано, что нужно ориентироваться на департаменты, а не на менеджеров. Поэтому и использовать надо department_id вместо manager_id
@@modest_handsome Кстати тоже не понял почему именно manager_id нельзя, думал что обязательным условием является ЛЮБОЕ общее. Типо отношение родитель-дочка...но при этом с департмент_ид все получается и выдается результат, а тоже самое, но с менеджер_ид не получается...
4 минуты не мало для такой темы ? И как решить это - Используя предложение WHERE и оператор BETWEEN, оставьте только те строки, в которых значение поля SALARY попадает в диапазон от 1 000 до 10 000 и дата приема сотрудника на работу попадает в диапазон от 01.01.07 до 30.06.07.
horosho chto v exele na rabote s massiwami dannih rabotal, logika ponyatna. Inache by tyazhelovato bilo bi. podzaprosi napominaut logiku funkcii VPR / INDEX POISKPOZ a sama vlozhennost' napominaet strukturu funkcii ESLI , kogda v nee pihaesh esche nescolko 'ESLI' kaskadom.
Не очень тяжело, но времени конечно заняло бы больше погружение в тему. А так опыт работы в экселе дает некоторое осознание происходящего. А если опыт хороший в экселе, то еще лучше!
Спасибо! Коммент в поддержку канала!
Запросы в уроке:
00:35
select * from departments;
01:07
select * from employees
where
department_id in (30, 91, 100)
;
01:45
select * from departments
where
department_name in ('Purchasing', 'Executive', 'Finance')
;
02:21
select * from employees
where
department_id in
(
select department_id from departments
where
department_name in ('Purchasing', 'Executive', 'Finance')
)
;
03:06
select * from employees
where hire_date between '01.06.05' and '31.08.05'
--where employee_id between 100 and 110
;
Не благодарите! :)
Для данного урока также есть ссылка с соответствующими запросами.
pastebin.com/tf855H6A
Если у кого-то есть вопросы по домашнему заданию, указанному в описании к данному видео, пишите здесь в комментариях или в нашей группе Телеграмм. Отвечу всем!
Также, если пропустили, рекомендую посмотреть первую часть урока про фильтрацию строк в запросе select. Ссылка: ua-cam.com/video/OWSRLbj1afo/v-deo.html
Все доступно☆
Спасибо
Спасибо
1. Правильно ли я понял из предыдущих уроков, что если дело доходит до манипуляций с датами, то лучше Всегда! не полениться и использовать оператор TO_DATE, а не просто заключать в апострофы указываемые даты? Т.е., например, вместо '01.06.2005' всегда! лучше не полениться и написать TO_DATE('01.06.2005', 'dd.mm.yyyy') во избежание некорректной выгрузки?
2. Оператор BETWEEN понимает оба формата даты: '01.06.05' и '01.06.2005'? (год указан полностью и частично).
Глеб,
1. Если код пишите исключительно для себя и на других ПК не планируете его запускать, то можно и без TO_DATE. В остальных случаях, лучше с TO_DATE.
2. Тут дело не в BETWEEN. Дату распознает сама СУБД. Поэтому, если в обычном селекте вы можете использовать тот или иной формат, то эти же форматы указания даты будут допустимы и в BETWEEN .
Класс, мозги вскипели на подзапросах. А как вывести несколько полей из обеих таблиц?
Подзапросы - очень часто используются, поэтому важно их разобрать. Наверняка пригодится в дальнейшем.Если что-то не понятно - задавайте вопросы в нашей группе Телеграм.
Насчет вывода нескольких полей. Это уже ближе к теме джойнов. В плейлисте данного курса есть соответствующие ссылки.
С подзапросами реально трудновато, надеюсь на практике уложится в голове, но 3-ье задание из ДЗ сделано ✌
Тут просто дело привычки. Надо чаще с ними работать и будет все нормально. Вещь очень полезная и реально часто используемая на практике.
Максим, приветствую! Подскажите, пжл, почему не срабатывает запрос в ДЗ? В чем ошибка?
SELECT * FROM employees
WHERE manager_id IN (SELECT manager_id FROM departments WHERE location_id >= 2600);
Все логично вроде: находим в таблице DEPARTMENTS айди всех менеджеров у кого LOCATION_ID >= 2600. Затем подставляем эти значения в оператор IN. Поле MANAGER_ID есть в обеих таблицах.
Глеб, добрый день.
Сама конструкция кода у вас правильная. Только вместо manager_id должно быть department_id
@@ExcelStore А не могли бы пояснить "почему именно department_id"? И почему не подходит manager_id? Этот параметр ведь есть в обеих таблицах и должен мочь выступать как связующее (общее) значение.
Мне на этом этапе важно это понять, чтобы разобраться в принципе выбора или, наоборот, отсева полей, которые должны или не должны быть использованы в расчетах.
@@modest_handsome Там просто по условию задачи звучит: "...все строки, LOCATION_ID департамента которых...". Т.е. явно сказано, что нужно ориентироваться на департаменты, а не на менеджеров. Поэтому и использовать надо department_id вместо manager_id
@@ExcelStore Ясно.
@@modest_handsome Кстати тоже не понял почему именно manager_id нельзя, думал что обязательным условием является ЛЮБОЕ общее. Типо отношение родитель-дочка...но при этом с департмент_ид все получается и выдается результат, а тоже самое, но с менеджер_ид не получается...
4 минуты не мало для такой темы ?
И как решить это - Используя предложение WHERE и оператор BETWEEN, оставьте только те строки, в которых значение поля SALARY попадает в диапазон от 1 000 до 10 000 и дата приема сотрудника на работу попадает в диапазон от 01.01.07 до 30.06.07.
horosho chto v exele na rabote s massiwami dannih rabotal, logika ponyatna. Inache by tyazhelovato bilo bi.
podzaprosi napominaut logiku funkcii VPR / INDEX POISKPOZ a sama vlozhennost' napominaet strukturu funkcii ESLI , kogda v nee pihaesh esche nescolko 'ESLI' kaskadom.
Не очень тяжело, но времени конечно заняло бы больше погружение в тему. А так опыт работы в экселе дает некоторое осознание происходящего. А если опыт хороший в экселе, то еще лучше!