Канал посвящен информационным технологиям и их изучению. Доступные видео на канале помогут вам с лёгкостью освоить новые навыки, чтобы в дальнейшем применять их на практике. Больше информации вы сможете найти на сайте: artemsannikov.ru
Спасибо за решение! Но так и не понял, почему нельзя группировать только по member_name? Почему если не учесть status в group by выдает ошибку?
@bombk1n4683 күн бұрын
SELECT good_name FROM Goods LEFT JOIN Payments ON good = good_id AND YEAR(date) = 2005 WHERE good IS NULL GROUP BY good_name
@user-mz1hl6qj9g12 күн бұрын
как мне найти эту базу данных
@Sannikov.a.a12 күн бұрын
@@user-mz1hl6qj9g эта база данных находится на сайте sql-academy
@user-ii1el1xd4jАй бұрын
О_О страшно благодарчка за эти видео
@nikitanikitin5934Ай бұрын
Подскажите, пожалуйста, будет ли верным использование запроса SELECT COUNT(plane) AS 'Количество' FROM Trip WHERE plane = 'TU-134' GROUP by Количество;
@user-tg9wn7er1yАй бұрын
WITH AAAA AS( SELECT company, COUNT(company) 'aaa' FROM Trip GROUP BY company ORDER BY aaa ASC LIMIT 3 ) DELETE Company FROM Company WHERE id IN ( SELECT company FROM AAAA )
@f1n1st13Ай бұрын
INSERT INTO Goods ( SELECT COUNT(*) + 1, 'Cheese', ( SELECT good_type_id FROM GoodTypes WHERE good_type_name = 'food' limit 1 ) FROM Goods ) Решение в премиуме, вообще не понимаю как работает, куда делись values? и почему нет имен колонок? Может кто то объяснить?
@kiss.to4ka.163Ай бұрын
Так сохранится только 1окно или все?
@kiss.to4ka.163Ай бұрын
Одно окно😢
@Sannikov.a.aАй бұрын
Будет сохранён проект , который открыт в текущем окне
@kadetchualihanovАй бұрын
Артём, добрый день! Тоже интересует этот вопрос, почему задача решается только с помощью алиаса? В чем проблема?
@Sannikov.a.aАй бұрын
При попытке выполнить запрос без псевдонима, СУБД пытается интерпретировать goods в подзапросе как таблицу в текущем контексте, то есть как целевую таблицу вставки. Псевдоним “as t” решает эту проблему, потому что он создает временное наименование для таблицы goods в контексте подзапроса. И теперь СУБД понимает, что t - это не таблица в текущем контексте, а временное имя для таблицы goods в подзапросе.
@lenabarlowАй бұрын
Странно, у меня в условиях ещё сказано использовать NOW()
@user-ot3ts7lj6f27 күн бұрын
у меня тоже
@musslim_808Ай бұрын
половина видео интро класс
@Shogun_SunАй бұрын
Спасибо!
@poidem_domoi2 ай бұрын
что делать если не сохранял бекап?
@Sannikov.a.a2 ай бұрын
С такой ситуацией не сталкивался, поэтому подсказать не могу
@boristaranda2 ай бұрын
select FLOOR(avg(FLOOR(DATEDIFF(NOW(), birthday) / 365))) as age from FamilyMembers Не благодарите, нашел на GITHUB
@mishaprokopovich52532 ай бұрын
Без join-ов можно так: SELECT name FROM Passenger p WHERE p.id IN ( SELECT pit.passenger FROM Pass_in_trip pit WHERE pit.trip IN ( SELECT t.id FROM Trip t WHERE t.plane = 'TU-134' AND t.town_to = 'Moscow' ) ) GROUP BY name; но вряд ли это производительней join-ов
@user-kk7xt3uo7x2 ай бұрын
Мое решение такое (возможно отсутствует красота синтаксиса, но я только учусь): SELECT we.teacher FROM ( SELECT sc.teacher AS teacher, c.name FROM Schedule AS sc INNER JOIN Class AS c ON (sc.class = c.id) AND (c.name LIKE '11%') GROUP BY sc.teacher, sc.class ) AS we GROUP BY we.teacher HAVING COUNT(we.teacher) = (SELECT COUNT(*) FROM Class WHERE name LIKE '11%') ORDER BY we.teacher
@awesomegirl84102 ай бұрын
Артем, но задание 35 немного другое. Нужно посчитать РАЗЛИЧНЫЕ кабинеты. Если бы кабинет в этот день использовался несколько раз, то результат был бы другим.
@BonShot-jv6zm2 ай бұрын
Артём, здравствуйте! Голову сломал уже, объясните , пожалуйста! Почему если не задать алиас таблице "Goods t" , то задача не решается. Я не понимаю( В других решениях аналогичная ситуация
@Sannikov.a.aАй бұрын
При попытке выполнить запрос без псевдонима, СУБД пытается интерпретировать goods в подзапросе как таблицу в текущем контексте, то есть как целевую таблицу вставки. Псевдоним “as t” решает эту проблему, потому что он создает временное наименование для таблицы goods в контексте подзапроса. И теперь СУБД понимает, что t - это не таблица в текущем контексте, а временное имя для таблицы goods в подзапросе.
@mishaprokopovich52532 ай бұрын
я такое выдал SELECT good_name from Goods g LEFT JOIN (SELECT DISTINCT good FROM Payments WHERE YEAR(date)='2005' ) subquery ON g.good_id=subquery.good WHERE subquery.good is null
@khikikomori2 ай бұрын
Спасибо за твой труд! Вопрос: почему идентификатор комнаты находишь так сложно? Если id есть в Reservation - значит комнату хотя бы 1 раз резервировали. SELECT DISTINCT room_id FROM Reservation разве не достаточно? :)
@user-swqaj34272 ай бұрын
можно обойтись одним джоином между Reviews и Reservations, потому что в таблице Reservations и так только те комнаты, которые хоть раз арендовали
@ertastoleuov42622 ай бұрын
а почему в команде селект указывается звездочка?
@Sannikov.a.a2 ай бұрын
Чтобы вывести все столбцы из таблицы, так как это нужно по условию задачи
@user-rx7jo1we2p3 ай бұрын
Не.работант
@user-rx7jo1we2p3 ай бұрын
Не работает
@user-rx7jo1we2p3 ай бұрын
Такая имба с этих видео научился sql и теперь работаю за границей
@akiiiro3 ай бұрын
Спасибо огромное
@desans34553 ай бұрын
Бляя чел. Ну 19 секунд пустой инфы)
@Sannikov.a.a3 ай бұрын
Читай доку, там будет быстрее)
@Jet-fm4om3 ай бұрын
это если может быть несколько деликатесов с максимальной ценой. если мы уверен, что такой всего 1, то можно и как автор видео. SELECT g.good_name, p.unit_price FROM Payments p JOIN Goods g ON p.good = g.good_id JOIN GoodTypes gt ON gt.good_type_id = g.type WHERE p.unit_price = ( SELECT MAX(unit_price) FROM Payments p JOIN Goods g ON p.good = g.good_id JOIN GoodTypes gt ON gt.good_type_id = g.type WHERE gt.good_type_name = 'delicacies' );
@user-rc9ht6hr8d3 ай бұрын
Спасибо!
@uikuw3 ай бұрын
что делать, если когда я нажимаю анпротект, после всех верно введённых данных, ничего не происходит?.. просто не срабатывает кнопка, перепробовала несколько раз
@user-sr5oe8mh6e3 ай бұрын
без SUM в 3-й строке работать не будет
@user-qk2wl4yf5y3 ай бұрын
Объясните, пожалуйста, зачем нужно было соединять с таблицей Trip?
@mishaprokopovich52532 ай бұрын
незачем, иногда грешат таким
@vazdrich3 ай бұрын
Почему не срабатывает добавление WHERE, где через селект ищем MAX(Pay.unit_price)?
@aleksaleks5834 ай бұрын
Забавно , но если посмотреть то товар "red caviar" продавался в 2006 году и у него есть ID платежки. Получается в описании задания неточность
@Foxxx_13314 ай бұрын
я так понимаю, при окне readonly нигде инфы нет. короче. после 30минутного дебилизма с прогой, вот как решить. закройте браузер. закройте это окно readonly... и ткните на unprotect. Заработает. из-за того, что браузер в фоне либо открыт unprotect не сработает
@blar_n_one86854 ай бұрын
SELECT good_name FROM Goods LEFT JOIN Payments ON Goods.good_id=Payments.good GROUP BY good_name HAVING SUM(YEAR(date)= '2005') IS NULL OR SUM (YEAR(date) = '2005')= 0
@alweon88624 ай бұрын
У меня получилось не так изящно, но все же: Select member_name, SUM(Payments.amount*Payments.unit_price) as costs FROM FamilyMembers JOIN Payments on Payments.family_member = FamilyMembers.member_id WHERE YEAR(Payments.date) = '2005' AND Month(Payments.date) = '6' GROUP BY member_name
@ThisRussia4 ай бұрын
SELECT FLOOR(AVG(YEAR(NOW())-YEAR(birthday)))-1 as age FROM FamilyMembers с каждым годом увеличиваем на 1 :)
@user-br5yr5hh2q4 ай бұрын
Power BI на виндовс 7 уже не устанавливается ?
@Sannikov.a.a4 ай бұрын
Думаю нет, надо смотреть по версии ПО
@sergey007lozhkin4 ай бұрын
а разве не нужно учесть условие (Having 3>0)? Ведь тут таких людей нет, которые ничего не потратили, а на практике это условие обязательно
@xDizeler4 ай бұрын
Добрый день, почему нельзя было сделать так : where p2.name = 'Steve Martin' t.town_to = 'London' , а писать в And ? получается where не поддерживает больше 1 условия?
@user-gj6or8pz8p4 ай бұрын
задача изменилась: теперь нельзя использовать функцию week, а по тексту появилось описание что такое неделя. предполагаю, что нужно использовать date_format, но что-то я не разобралась с вариациями формата, выдаёт ошибку
@Cesar1k4 ай бұрын
работает функция week, причем принимает ответ без указания года.
@user-nd9do2nk2j4 ай бұрын
c if решение такое: select name, if(id in(select owner_id from rooms), 1, 0) is_owner, if(id in(select user_id from reservations), 1, 0) is_tenant from users
@Sanya_Uvelir4 ай бұрын
SELECT member_name, status , sum(amount*unit_price) as costs from Payments p JOIN FamilyMembers f ON p.family_member=f.member_id where YEAR(date)=2005 GROUP by p.family_member не знаю почему но тоже прошло правильно
@user-nd9do2nk2j4 ай бұрын
Спасибо за материал! Очень помогло. Находил ответы так же в текстовом варианте, но с видео удобнее проверять себя.
@user-nd9do2nk2j4 ай бұрын
либо вот так вот: select if(price <= 100, 'economy', if(price < 200, 'comfort', 'premium')) category, count(*) count from rooms group by category
@user-nd9do2nk2j4 ай бұрын
еще можно с помощью разделителя решить. вот так: select substring_index(email, '@', -1) as domain , count(*) as count from users group by domain order by count desc, domain
@user-nd9do2nk2j4 ай бұрын
спасибо!
@ksu_valery4 ай бұрын
Это некорректный запрос, т.к. не учитываете месяц рождения ... у вас получится, что человеку, рожденному 31.12.2000, 1 января 2024 уже исполнилось 24 года, хотя до ДР жить ещё целый год ))) ... у меня 47 получается, а нужно подогнать под тренажер )) измучилась, вот сюда привели поиски решения ))
@user-ug2sj4bg2o5 ай бұрын
А почему тут не работает такой запрос? select name from Company where id in ( SELECT id from Trip where plane="Boeing" );
Пікірлер
Спасибо за решение! Но так и не понял, почему нельзя группировать только по member_name? Почему если не учесть status в group by выдает ошибку?
SELECT good_name FROM Goods LEFT JOIN Payments ON good = good_id AND YEAR(date) = 2005 WHERE good IS NULL GROUP BY good_name
как мне найти эту базу данных
@@user-mz1hl6qj9g эта база данных находится на сайте sql-academy
О_О страшно благодарчка за эти видео
Подскажите, пожалуйста, будет ли верным использование запроса SELECT COUNT(plane) AS 'Количество' FROM Trip WHERE plane = 'TU-134' GROUP by Количество;
WITH AAAA AS( SELECT company, COUNT(company) 'aaa' FROM Trip GROUP BY company ORDER BY aaa ASC LIMIT 3 ) DELETE Company FROM Company WHERE id IN ( SELECT company FROM AAAA )
INSERT INTO Goods ( SELECT COUNT(*) + 1, 'Cheese', ( SELECT good_type_id FROM GoodTypes WHERE good_type_name = 'food' limit 1 ) FROM Goods ) Решение в премиуме, вообще не понимаю как работает, куда делись values? и почему нет имен колонок? Может кто то объяснить?
Так сохранится только 1окно или все?
Одно окно😢
Будет сохранён проект , который открыт в текущем окне
Артём, добрый день! Тоже интересует этот вопрос, почему задача решается только с помощью алиаса? В чем проблема?
При попытке выполнить запрос без псевдонима, СУБД пытается интерпретировать goods в подзапросе как таблицу в текущем контексте, то есть как целевую таблицу вставки. Псевдоним “as t” решает эту проблему, потому что он создает временное наименование для таблицы goods в контексте подзапроса. И теперь СУБД понимает, что t - это не таблица в текущем контексте, а временное имя для таблицы goods в подзапросе.
Странно, у меня в условиях ещё сказано использовать NOW()
у меня тоже
половина видео интро класс
Спасибо!
что делать если не сохранял бекап?
С такой ситуацией не сталкивался, поэтому подсказать не могу
select FLOOR(avg(FLOOR(DATEDIFF(NOW(), birthday) / 365))) as age from FamilyMembers Не благодарите, нашел на GITHUB
Без join-ов можно так: SELECT name FROM Passenger p WHERE p.id IN ( SELECT pit.passenger FROM Pass_in_trip pit WHERE pit.trip IN ( SELECT t.id FROM Trip t WHERE t.plane = 'TU-134' AND t.town_to = 'Moscow' ) ) GROUP BY name; но вряд ли это производительней join-ов
Мое решение такое (возможно отсутствует красота синтаксиса, но я только учусь): SELECT we.teacher FROM ( SELECT sc.teacher AS teacher, c.name FROM Schedule AS sc INNER JOIN Class AS c ON (sc.class = c.id) AND (c.name LIKE '11%') GROUP BY sc.teacher, sc.class ) AS we GROUP BY we.teacher HAVING COUNT(we.teacher) = (SELECT COUNT(*) FROM Class WHERE name LIKE '11%') ORDER BY we.teacher
Артем, но задание 35 немного другое. Нужно посчитать РАЗЛИЧНЫЕ кабинеты. Если бы кабинет в этот день использовался несколько раз, то результат был бы другим.
Артём, здравствуйте! Голову сломал уже, объясните , пожалуйста! Почему если не задать алиас таблице "Goods t" , то задача не решается. Я не понимаю( В других решениях аналогичная ситуация
При попытке выполнить запрос без псевдонима, СУБД пытается интерпретировать goods в подзапросе как таблицу в текущем контексте, то есть как целевую таблицу вставки. Псевдоним “as t” решает эту проблему, потому что он создает временное наименование для таблицы goods в контексте подзапроса. И теперь СУБД понимает, что t - это не таблица в текущем контексте, а временное имя для таблицы goods в подзапросе.
я такое выдал SELECT good_name from Goods g LEFT JOIN (SELECT DISTINCT good FROM Payments WHERE YEAR(date)='2005' ) subquery ON g.good_id=subquery.good WHERE subquery.good is null
Спасибо за твой труд! Вопрос: почему идентификатор комнаты находишь так сложно? Если id есть в Reservation - значит комнату хотя бы 1 раз резервировали. SELECT DISTINCT room_id FROM Reservation разве не достаточно? :)
можно обойтись одним джоином между Reviews и Reservations, потому что в таблице Reservations и так только те комнаты, которые хоть раз арендовали
а почему в команде селект указывается звездочка?
Чтобы вывести все столбцы из таблицы, так как это нужно по условию задачи
Не.работант
Не работает
Такая имба с этих видео научился sql и теперь работаю за границей
Спасибо огромное
Бляя чел. Ну 19 секунд пустой инфы)
Читай доку, там будет быстрее)
это если может быть несколько деликатесов с максимальной ценой. если мы уверен, что такой всего 1, то можно и как автор видео. SELECT g.good_name, p.unit_price FROM Payments p JOIN Goods g ON p.good = g.good_id JOIN GoodTypes gt ON gt.good_type_id = g.type WHERE p.unit_price = ( SELECT MAX(unit_price) FROM Payments p JOIN Goods g ON p.good = g.good_id JOIN GoodTypes gt ON gt.good_type_id = g.type WHERE gt.good_type_name = 'delicacies' );
Спасибо!
что делать, если когда я нажимаю анпротект, после всех верно введённых данных, ничего не происходит?.. просто не срабатывает кнопка, перепробовала несколько раз
без SUM в 3-й строке работать не будет
Объясните, пожалуйста, зачем нужно было соединять с таблицей Trip?
незачем, иногда грешат таким
Почему не срабатывает добавление WHERE, где через селект ищем MAX(Pay.unit_price)?
Забавно , но если посмотреть то товар "red caviar" продавался в 2006 году и у него есть ID платежки. Получается в описании задания неточность
я так понимаю, при окне readonly нигде инфы нет. короче. после 30минутного дебилизма с прогой, вот как решить. закройте браузер. закройте это окно readonly... и ткните на unprotect. Заработает. из-за того, что браузер в фоне либо открыт unprotect не сработает
SELECT good_name FROM Goods LEFT JOIN Payments ON Goods.good_id=Payments.good GROUP BY good_name HAVING SUM(YEAR(date)= '2005') IS NULL OR SUM (YEAR(date) = '2005')= 0
У меня получилось не так изящно, но все же: Select member_name, SUM(Payments.amount*Payments.unit_price) as costs FROM FamilyMembers JOIN Payments on Payments.family_member = FamilyMembers.member_id WHERE YEAR(Payments.date) = '2005' AND Month(Payments.date) = '6' GROUP BY member_name
SELECT FLOOR(AVG(YEAR(NOW())-YEAR(birthday)))-1 as age FROM FamilyMembers с каждым годом увеличиваем на 1 :)
Power BI на виндовс 7 уже не устанавливается ?
Думаю нет, надо смотреть по версии ПО
а разве не нужно учесть условие (Having 3>0)? Ведь тут таких людей нет, которые ничего не потратили, а на практике это условие обязательно
Добрый день, почему нельзя было сделать так : where p2.name = 'Steve Martin' t.town_to = 'London' , а писать в And ? получается where не поддерживает больше 1 условия?
задача изменилась: теперь нельзя использовать функцию week, а по тексту появилось описание что такое неделя. предполагаю, что нужно использовать date_format, но что-то я не разобралась с вариациями формата, выдаёт ошибку
работает функция week, причем принимает ответ без указания года.
c if решение такое: select name, if(id in(select owner_id from rooms), 1, 0) is_owner, if(id in(select user_id from reservations), 1, 0) is_tenant from users
SELECT member_name, status , sum(amount*unit_price) as costs from Payments p JOIN FamilyMembers f ON p.family_member=f.member_id where YEAR(date)=2005 GROUP by p.family_member не знаю почему но тоже прошло правильно
Спасибо за материал! Очень помогло. Находил ответы так же в текстовом варианте, но с видео удобнее проверять себя.
либо вот так вот: select if(price <= 100, 'economy', if(price < 200, 'comfort', 'premium')) category, count(*) count from rooms group by category
еще можно с помощью разделителя решить. вот так: select substring_index(email, '@', -1) as domain , count(*) as count from users group by domain order by count desc, domain
спасибо!
Это некорректный запрос, т.к. не учитываете месяц рождения ... у вас получится, что человеку, рожденному 31.12.2000, 1 января 2024 уже исполнилось 24 года, хотя до ДР жить ещё целый год ))) ... у меня 47 получается, а нужно подогнать под тренажер )) измучилась, вот сюда привели поиски решения ))
А почему тут не работает такой запрос? select name from Company where id in ( SELECT id from Trip where plane="Boeing" );