Определите сколько было выпущено игр для ps2 в каждом году таблицу отсортируйте по возрастанию года
Запуск PlayStation 2 стал настоящим историческим событием, которое в нынешних реалиях представить весьма непросто. И хотя можно провести параллели с настоящим: тут и не очень внушительная линейка игр на запуске, и сумасшедшие очереди у магазинов перед выходом в продажу, отличия всё же есть, и они уникальные. Например, жуткая реклама от Дэвида Линча, или неожиданный успех игровой консоли, но в качестве DVD-плеера — что это вообще было?
В нашем ретроспективном материале собраны факты об истории запуска PS2, цитаты руководителей разных отделов Sony, подборка ключевых проектов, вышедших на консоль и много-много интересного контента.
После успешного вторжения на рынок, руководители игрового подразделения были в недоумении, каким образом нужно переходить на следующее поколение консолей, чтобы одновременно дать отпор конкурентам, завлечь новую аудиторию, а также заставить своих поклонников перейти на следующею итерацию «игровой станции».
Вот, как вспоминают временной промежуток между выпуском PS1 и PS2 важные представители компании Sony в тот временной период:
Как только мы выпустили PS1, я сразу начал думать о следующем поколении, чтобы продолжить наше доминирование на консольном рынке во втором раунде. У Nintendo и SEGA никогда не получалось безоговорочно лидировать два раза подряд, поэтому для меня это стало личной целью
Playstation 2 мы вели себя очень осторожно, ведь история не знала случая, когда один и тот же производитель удерживал лидерство на протяжении двух поколений. Мы боялись увязнуть в собственном успехе и мы испытывали большой трепет, удваивая наши силы при переходе на новую консоль
Будучи окрыленными успехом PS1 мы оказались совершенно неподготовленными к запуску PS2. Мы были молодыми игроками на консольном рынке и понятия не имели, как быстро перейти с PS1 на PS2. На релизе у нас было очень мало игр — шутка ли, во время запуска в Японии самым продаваемым диском для нашей приставки оказался DVD с Матрицей
Можно попроще сделать
============================================================
Задание: 13 (Serge I: 2002-11-02)
Найдите среднюю скорость ПК, выпущенных производителем A.
Select avg(speed) from pc where model in (select p.model from product p where p.maker = 'A')
============================================================
Задание: 9 (Serge I: 2002-11-02)
Найдите производителей ПК с процессором не менее 450 Мгц. Вывести: Maker
Select p.maker from product p
where p.model in (select pc.model from pc pc where speed >= 450)
group by p.maker
============================================================
Задание: 7 (Serge I: 2002-11-02)
Найдите номера моделей и цены всех продуктов (любого типа), выпущенных производителем B (латинская буква).
select p.model, pc.price from product p
join pc pc on p.model=pc.model
where p.maker = 'B'
select p.model, l.price from product p
join laptop l on p.model=l.model
where p.maker = 'B'
select p.model, pr.price from product p
join printer pr on p.model=pr.model
where p.maker = 'B'
============================================================
select p.model, pc.price from product p, pc pc
where p.model=pc.model and p.maker = 'B'
union
select p.model, l.price from product p, laptop l
where p.model=l.model and p.maker = 'B'
union
select p.model, pr.price from product p, printer pr
where p.model=pr.model and p.maker = 'B'
Александр, проще так
select Ships.class, Ships.name, Classes.country
from Ships INNER JOIN
Classes ON Classes.class = Ships.class
where numGuns >= 10
или эдак
Select sh.class, sh.name, c.country from classes c, ships sh
where c.class=sh.class and numguns >= 10
============================================================
Задание: 16 (Serge I: 2003-02-03)
Найдите пары моделей PC, имеющих одинаковые скорость и RAM. В результате каждая пара указывается только один раз, т.е. (i,j), но не (j,i), Порядок вывода: модель с большим номером, модель с меньшим номером, скорость и RAM.
Select a.model, b.model, a.speed, a.ram from pc a, pc b
where a.speed = b.speed and a.ram = b.ram and a.model > b.model
group by a.model, b.model, a.speed, a.ram
============================================================
Задание: 17 (Serge I: 2003-02-03)
Найдите модели ПК-блокнотов, скорость которых меньше скорости любого из ПК.
Вывести: type, model, speed
Select p.type, l.model, l.speed from product p, laptop l
where l.speed < all(select speed from pc) and p.type = 'laptop'
group by p.type, l.model, l.speed
============================================================
Задание: 18 (Serge I: 2003-02-03)
Найдите производителей самых дешевых цветных принтеров. Вывести: maker, price
Select p.maker, pr.price from product p , printer pr
where pr.color = 'y' and p.model = pr.model and
pr.price = (select min(price) from printer where color = 'y')
group by p.maker, pr.price
============================================================
Задание: 19 (Serge I: 2003-02-13)
Для каждого производителя, имеющего модели в таблице Laptop, найдите средний размер экрана выпускаемых им ПК-блокнотов.
Вывести: maker, средний размер экрана.
Select p.maker, avg(l.screen) from product p, laptop l
where p.model = l.model
group by p.maker
============================================================
Задание: 20 (Serge I: 2003-02-13)
Найдите производителей, выпускающих по меньшей мере три различных модели ПК. Вывести: Maker, число моделей ПК.
Select maker, count(p.model)
from product p
where p.type = 'pc'
group by p.maker
having count(p.model) >= 3
============================================================
Задание: 24 (Serge I: 2003-02-03)
Перечислите номера моделей любых типов, имеющих самую высокую цену по всей имеющейся в базе данных продукции.
Select model from
(
select model, price from pc
union
select model, price from laptop
union
select model, price from printer
)table1
where price = (select max(max_price) from
(
select max(price)as max_price from pc
union
select max(price) as max_price from laptop
union
select max(price) as max_price from printer
) table2
)
============================================================
Задание: 25 (Serge I: 2003-02-14)
Найдите производителей принтеров, которые производят ПК с наименьшим объемом RAM и с самым быстрым процессором среди всех ПК, имеющих наименьший объем RAM. Вывести: Maker
Select p.maker from product p, pc
where p.model = pc.model
and
speed = (
select max(speed) from pc
where ram = (select min(ram) from pc)
)
and
pc.ram in (select min(ram) from pc)
intersect
select p.maker from product p, printer pr
where p.type = 'printer'
p.s. в проверочной базе в таблице printer нет одной модели, которая есть в таблице product, причём производитель этой модели выпускает и пк, удовлетворяющий условию задачи
============================================================
Select p.maker from product p, pc
where p.model=pc.model
and
speed = (
select max(speed) from pc
where ram = (select min(ram) from pc)
)
and
pc.ram in (select min(ram) from pc)
and
p.maker in (select maker from product where type = 'printer')
group by p.maker
============================================================
Задание: 94 (Serge I: 2003-04-09)
Для семи последовательных дней, начиная от минимальной даты, когда из Ростова было совершено максимальное число рейсов, определить число рейсов из Ростова.
Вывод: дата, количество рейсов
with xuy as (select date, count(town_from) count from (Select distinct pt.trip_no, date, town_from from pass_in_trip pt left join trip t on t.trip_no=pt.trip_no where town_from='rostov' )aa group by date)
select date2, coalesce(count, 0) from (select dateadd(dd, a, (select top 1 date from xuy order by count desc,date)) as date2 from (select 0 a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6)cc)dd left join xuy on xuy.date=dd.date2
Качественное выполнение задач. Cоздание и поддержка сайтов
Проекты выполнялись на Java, C++, Delphi, PHP (MySQL, jQuery).
Пишу лабораторные и курсовые по разным дисциплинам.
При обращении высылаю скриншоты выполненных проектов.
Портфолио содержит следующие работы:
● Написание плагинов и модулей к CMS, написание скриптов для парсинга сайтов или каталогов, написание CMS для лендинга посадочных страниц, написание системы управления по логистике грузовых автомашин (PHP, MySQL).
● Разработка сервлетов и скриптов для обеспечения требуемой функциональности (Java, Javascript).
● Написание программ и библиотек для работы со скважинной аппаратурой, обработка данных приборов и их графическое отображение (Delphi, C++)
Задание: 97 (qwrqwr: 2013-02-15)
Отобрать из таблицы Laptop те строки, для которых выполняется следующее условие:
значения из столбцов speed, ram, price, screen возможно расположить таким образом, что каждое последующее значение будет превосходить предыдущее в 2 раза или более.
Замечание: все известные характеристики ноутбуков больше нуля.
Вывод: code, speed, ram, price, screen.
with xuy as
(select row_number() over(partition BY code ORDER BY code,feat) num, feat, code from (select speed feat, code from laptop
union all
select ram, code from laptop
union all
select price, code from laptop
union all
select screen, code from laptop)aa)
select code,speed,ram,price,screen from laptop where code in (select code from (select [code],[1],[2],[3],[4] from xuy x pivot (min(feat) for num in ([1],[2],[3],[4]))pvt)aa where [4]/[3]>=2 and [3]/[2]>=2 and [2]/[1]>=2)
Продолжаю цикл небольших заметок, полезных новым владельцам домашних и портативных приставок. Рассмотрим, сколько игр вышло на PS2 за время существования самой популярной консоли.
По информации английской Википедии, общее число официальных релизов составляет 4490 наименований. Около 70 % выходили за пределами Японии, но хватает и азиатских эксклюзивов, не получивших локализации для западных стран. Впрочем, многое перевели фанаты, процесс продолжается.
Практика
На GROUP BY
Найдите самые маленькие зарплаты по группам возрастов (для каждого возраста свою минимальную зарплату).
Найдите самый большой возраст по группам зарплат (для каждой зарплаты свой максимальный возраст).
Задача
Задача. Выберите из таблицы workers все записи так, чтобы вместо id было workersId, вместо login – workersLogin, вместо salary - workersSalary.
Задача
Задача. При выборке из таблицы workers отнимите от даты 1 год.
Задача
Задача. Выберите из таблицы workers записи с id равным 3, 5, 6, 10 и логином, равным 'eee', 'zzz' или 'ggg'.
Практика
На EXTRACT, DATE
При выборке из таблицы workers запишите год, месяц и день в отдельные поля с помощью EXTRACT.
При выборке из таблицы workers запишите день, месяц и год в отдельное поле с помощью DATE в формате 'год-месяц-день'.
Задачи для решения
Во всех задачах ниже считайте, что таблица workers имеет поля id, login, salary, age, date, description (и другие при необходимости).
На MIN и MAX
Найдите в таблице workers минимальную зарплату.
Найдите в таблице workers максимальную зарплату.
На подзапросы
Выберите из таблицы workers все записи, зарплата в которых больше средней зарплаты.
Выберите из таблицы workers все записи, возраст в которых меньше среднего возраста, деленного на 2 и умноженного на 3.
Выберите из таблицы workers записи с минимальной зарплатой.
Выберите из таблицы workers записи с максимальной зарплатой.
При выборке из таблицы workers создайте новое поле max, в котором будет лежать максимальное значение зарплаты для возраста 25 лет.
При выборке из таблицы workers создайте новое поле avg, в котором будет лежать деленная на 2 разница между максимальным значением возраста и минимальным значением возраста в во всей таблице.
При выборке из таблицы workers создайте новое поле avg, в котором будет лежать деленная на 2 разница между максимальным значением зарплаты и минимальным значением зарплаты для возраста 25 лет.
Практика
- Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс Arr - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс Ticket - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс TicketCollection - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс Date - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс Interval - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс File
Задача
Задача. При выборке из таблицы workers запишите день, месяц и год в отдельные поля.
Задача
Задача. Найдите в таблице workers суммарный возраст.
На JOIN
Даны две таблицы: таблица category с полями id и name и таблица page с полями id, name и category_id. Достаньте одним запросом все страницы вместе с их категориями.
Даны 3 таблицы: таблица category с полями id и name, таблица sub_category с полями id и name и таблица page с полями id, name и sub_category_id. Достаньте одним запросом все страницы вместе с их подкатегориями и категориями.
На UNION
Даны две таблицы: таблица category и таблица sub_category с полями id и name. Достаньте одним запросом названия категорий и подкатегорий.
Трейты
- Урок №
новая вкладка с new.code.mu
Введение в трейты - Урок №
новая вкладка с new.code.mu
Несколько трейтов - Урок №
новая вкладка с new.code.mu
Конфликты методов - Урок №
новая вкладка с new.code.mu
Модификаторы доступа - Урок №
новая вкладка с new.code.mu
Приоритет методов - Урок №
новая вкладка с new.code.mu
. текст, код Статические свойства - Урок №
новая вкладка с new.code.mu
. текст, код Статические методы - Урок №
новая вкладка с new.code.mu
Абстрактные методы - Урок №
новая вкладка с new.code.mu
Трейты в трейтах
На CONCAT, CONCAT_WS
При выборке из таблицы workers создайте новое поле res, в котором будут лежать одновременно зарплата и возраст (слитно).
При выборке из таблицы workers создайте новое поле res, в котором будут лежать одновременно зарплата и возраст (слитно), а после возраста будут идти три знака '!'.
При выборке из таблицы workers создайте новое поле res, в котором будут лежать одновременно зарплата и возраст через дефис.
При выборке из таблицы workers получите первые 5 символов логина и добавьте троеточие.
На NOW, CURRENT_DATE, CURRENT_TIME
Для решения задач данного блока вам понадобятся следующие SQL команды и функции: NOW, CURRENT_DATE, CURRENT_TIME.
Выберите из таблицы workers все записи, у которых дата больше текущей.
Вставьте в таблицу workers запись с полем date с текущим моментом времени в формате 'год-месяц-день часы:минуты:секунды'.
Вставьте в таблицу workers запись с полем date с текущей датой в формате 'год-месяц-день'.
Вставьте в таблицу workers запись с полем time с текущим моментом времени в формате 'часы:минуты:секунды'.
Продвинутые БД
На INTERVAL, DATE_ADD, DATE_SUB
Для решения задач данного блока вам понадобятся следующие SQL команды и функции: INTERVAL, DATE_ADD, DATE_SUB.
При выборке из таблицы workers прибавьте к дате 1 день.
При выборке из таблицы workers отнимите от даты 1 день.
При выборке из таблицы workers прибавьте к дате 1 день, 2 часа.
При выборке из таблицы workers прибавьте к дате 1 год, 2 месяца.
При выборке из таблицы workers прибавьте к дате 1 день, 2 часа, 3 минуты.
При выборке из таблицы workers прибавьте к дате 1 день, 2 часа, 3 минуты, 5 секунд.
При выборке из таблицы workers прибавьте к дате 2 часа, 3 минуты, 5 секунд.
При выборке из таблицы workers прибавьте к дате 1 день и отнимите 2 часа.
При выборке из таблицы workers прибавьте к дате 1 день и отнимите 2 часа, 3 минуты.
На IN
Выберите из таблицы workers записи с id равным 1, 2, 3, 5, 14.
Выберите из таблицы workers записи с login равным 'eee', 'bbb', 'zzz'.
Выберите из таблицы workers записи с id равным 1, 2, 3, 7, 9, и логином, равным 'user', 'admin', 'ivan' и зарплатой больше 300.
На DATE_FORMAT
При выборке из таблицы workers выведите дату в формате '31.12.2025'.
При выборке из таблицы workers выведите дату в формате '2025% 31.12'.
Задача
Задача. Выберите из таблицы workers записи с id равным 3, 5, 6, 10.
ООП и MVC
Задача
Задача. При выборке из таблицы workers прибавьте к дате 4 дня, 3 часа, 2 минуты, 1 секунду.
На GROUP_CONCAT
Выберите из таблицы workers уникальные возраста так, чтобы для каждого возраста было поле res, в котором будут лежать через дефис id записей с таким возрастом.
Задача
Задача. При выборке из таблицы workers прибавьте к дате 3 года, 4 месяца.
Задача
Задача. Вставьте в таблицу workers запись с полем date с текущей датой в формате 'год-месяц-день'.
Сколько игр вышло на PS2 – во что поиграть:
- Серия AceCombat. Авиационная аркада, цепляющая динамичным сюжетом и полным отсутствием какого-либо реализма. Забудьте о долгих взлётах и посадках, перед вами экшен с пальбой и красочными взрывами, ничего лишнего;
- Black. Высокотехнологичный (для своего времени) шутер, способный конкурировать в плане графики и крутой физики с проектами тех лет на ПК;
- Bully. Аналог Grand Theft Auto, где мы играем за школьника и подминаем под себя окрестных хулиганов;
- Франшиза Burnout. Ранние части играются восхитительно, да и визуально устарели меньше других произведений;
- Трилогия DevilMayCry, недавно её переиздали на Nintendo Switch, легендарные слэшеры;
- Disgaea. Тактические видеоигры для PlayStation 2 – отдельная песня, их много и они отличнейшие;
- Сага FatalFrame. Ужастики с элементами выживания, серьёзно выбивающиеся на фоне ResidentEvil;
- Три части FinalFantasy. Комментарии излишни, речь о фантастически популярных JRPG;
- Серия GTA от Rockstar Games. Несмотря на морально устаревшую графику и кукольных персонажей с квадратными руками, этот открытый мир ещё способен удивить публику.
Расскажите в комментариях о своих любимых проектах на PlayStation 2. Вместе мы соберём список, во что поиграть новичку.
Перед выполнением задач, необходимо понимать структуру sql запроса:
Оператор HAVING позволяет выполнить фильтрацию групп, то есть определяет, какие группы будут включены в выходной результат.
Использование HAVING во многом аналогично применению WHERE. Только если WHERE применяется для фильтрации строк, то HAVING - для фильтрации групп.
1. Найдите номер модели, скорость и размер жесткого диска для всех ПК стоимостью менее 500 дол. Вывести: model, speed и hd
select model, speed, hd from pc where price < 500
2. Найдите производителей принтеров. Вывести: maker
SELECT maker FROM Product WHERE type = 'Printer' GROUP BY maker
3. Найдите номер модели, объем памяти и размеры экранов ПК-блокнотов, цена которых превышает 1000 дол.
Select model, ram, screen from laptop where price > 1000
4. Найдите все записи таблицы Printer для цветных принтеров.
Select * from printer where color = 'y'
5. Найдите номер модели, скорость и размер жесткого диска ПК, имеющих 12x или 24x CD и цену менее 600 дол.
Select model, speed, hd from pc where (cd = '12x' or cd = '24x') and price < 600
6. Для каждого производителя, выпускающего ПК-блокноты c объёмом жесткого диска не менее 10 Гбайт, найти скорости таких ПК-блокнотов. Вывод: производитель, скорость.
Select distinct p.maker as maker, l.speed as speed from laptop l join product p on l.model = p.model where l.hd >= 10
7. Найдите номера моделей и цены всех имеющихся в продаже продуктов (любого типа) производителя B (латинская буква).
Select distinct p.model, pc.price from product p join pc on p.model = pc.model where maker = 'B' union Select distinct p.model, l.price from product p join laptop l on p.model = l.model where maker = 'B' union Select distinct p.model, pr.price from product p join printer pr on p.model = pr.model where maker = 'B'
8. Найдите производителя, выпускающего ПК, но не ПК-блокноты.
select maker from product where type = 'pc' except select maker from product where type = 'laptop' или select distinct maker from product where type = 'pc' and maker not in (SELECT maker from product where type = 'laptop')
9. Найдите производителей ПК с процессором не менее 450 Мгц. Вывести: Maker
Select distinct p.maker from product p join pc pc on p.model = pc.model where pc.speed >= '450'
10. Найдите модели принтеров, имеющих самую высокую цену. Вывести: model, price
SELECT DISTINCT model, price FROM printer where price = (SELECT MAX(price) FROM printer)
11. Найдите среднюю скорость ПК.
SELECT AVG(speed) FROM PC
12. Найдите среднюю скорость ПК-блокнотов, цена которых превышает 1000 дол.
Select AVG(speed) from laptop where price > '1000'
13. Найдите среднюю скорость ПК, выпущенных производителем A
Select avg(pc.speed) from pc join product p on pc.model = p.model where maker = 'A'
14. Найдите класс, имя и страну для кораблей из таблицы Ships, имеющих не менее 10 орудий.
Select s.class, s.name, c.country from classes c join ships s on c.class = s.class where numguns >= '10'
15. Найдите размеры жестких дисков, совпадающих у двух и более PC. Вывести: HD
SELECT hd FROM PC group by hd having count(model) >= 2
16. Найдите пары моделей PC, имеющих одинаковые скорость и RAM. В результате каждая пара указывается только один раз, т.е. (i,j), но не (j,i), Порядок вывода: модель с большим номером, модель с меньшим номером, скорость и RAM.
SELECT DISTINCT A.model AS model, B.model AS model, A.speed As speed, A.ram As ram FROM PC AS A, PC B WHERE A.speed = B.speed AND A.ram = B.ram AND A.model > B.model
17. Найдите модели ПК-блокнотов, скорость которых меньше скорости каждого из ПК. Вывести: type, model, speed
18. Найдите производителей самых дешевых цветных принтеров. Вывести: maker, price
Select distinct p.maker, pr.price from product p join printer pr on p.model = pr.model where pr.price = (SELECT MIN(price)
FROM printer where color = 'y') and pr.color = 'y'
19. Для каждого производителя, имеющего модели в таблице Laptop, найдите средний размер экрана выпускаемых им ПК-блокнотов.
Вывести: maker, средний размер экрана.
Select p.maker, AVG(l.screen) from product p join laptop l on p.model = l.model group by p.maker
20. Найдите производителей, выпускающих по меньшей мере три различных модели ПК. Вывести: Maker, число моделей ПК.
Select maker, count(model) as Count_Model from product WHERE type = 'pc' group by maker having count(model) >= 3
21. Найдите максимальную цену ПК, выпускаемых каждым производителем, у которого есть модели в таблице PC.
Вывести: maker, максимальная цена.
Select p.maker, max(pc.price) as max_price from product p join pc pc on p.model = pc.model group by maker
22. Для каждого значения скорости ПК, превышающего 600 МГц, определите среднюю цену ПК с такой же скоростью. Вывести: speed, средняя цена.
Select speed, avg(price) from pc where speed > '600' group by speed
23. Найдите производителей, которые производили бы как ПК
со скоростью не менее 750 МГц, так и ПК-блокноты со скоростью не менее 750 МГц. Вывести: Maker
Select p.maker from product p join pc pc on p.model = pc.model where pc.speed >= '750' intersect Select p.maker from product p join laptop l on p.model = l.model where l.speed >= '750'
24. Перечислите номера моделей любых типов, имеющих самую высокую цену по всей имеющейся в базе данных продукции.
WITH all_model AS (
SELECT model, price FROM pc
UNION ALL
SELECT model, price FROM printer
UNION ALL
SELECT model, price FROM laptop )
SELECT distinct model
FROM all_model WHERE price = ALL ( SELECT max(price) FROM all_model)
25. Найдите производителей принтеров, которые производят ПК с наименьшим объемом RAM и с самым быстрым процессором среди всех ПК, имеющих наименьший объем RAM. Вывести: Maker
select distinct p.maker from product p join pc on p.model = pc.model where pc.ram = (select min(ram) from pc) and pc.speed = (SELECT MAX(speed) FROM pc WHERE ram = (SELECT MIN(ram) FROM pc)) and p.maker in (SELECT maker FROM product WHERE type = 'printer')
26. Найдите среднюю цену ПК и ПК-блокнотов, выпущенных производителем A (латинская буква). Вывести: одна общая средняя цена.
SELECT AVG(price) as Avg_price FROM (SELECT price
FROM PC WHERE model IN (SELECT model FROM product WHERE maker='A' AND type='PC') UNION ALL SELECT price
FROM Laptop
WHERE model IN (SELECT model FROM product WHERE maker='A' AND
type='Laptop')
) AS prods
27. Найдите средний размер диска ПК каждого из тех производителей, которые выпускают и принтеры. Вывести: maker, средний размер HD.
SELECT p.maker, avg(pc.hd) from product p join pc pc on p.model = pc.model WHERE pc.model IN (SELECT model FROM pc) AND maker IN (
SELECT maker FROM product WHERE type='printer') group by maker или select p.maker, avg(pc.hd) as avg_hd from product p join pc on p.model = pc.model where p.maker in (select maker from product where type = 'printer') group by p.maker
28. Используя таблицу Product, определить количество производителей, выпускающих по одной модели.
select count(maker) as qty from (SELECT distinct maker
FROM product group by maker having count(model) = 1) AS prod или select distinct count(maker) as qty from product where maker in (Select maker from product group by maker having count(model) = 1)
29. В предположении, что приход и расход денег на каждом пункте приема фиксируется не чаще одного раза в день [т.е. первичный ключ (пункт, дата)], написать запрос с выходными данными (пункт, дата, приход, расход). Использовать таблицы Income_o и Outcome_o.
Select i.point, i.date, inc, out from income_o i left join outcome_o o on i.point = o.point and i.date = o.date
union
Select o.point, o.date, inc, out from income_o i right join outcome_o o on i.point = o.point and i.date = o.date
30. В предположении, что приход и расход денег на каждом пункте приема фиксируется произвольное число раз (первичным ключом в таблицах является столбец code), требуется получить таблицу, в которой каждому пункту за каждую дату выполнения операций будет соответствовать одна строка.
Вывод: point, date, суммарный расход пункта за день (out), суммарный приход пункта за день (inc). Отсутствующие значения считать неопределенными (NULL).
select point, date, SUM(sum_out), SUM(sum_inc)
from( select point, date, SUM(inc) as sum_inc, null as sum_out from Income Group by point, date
Union
select point, date, null as sum_inc, SUM(out) as sum_out from Outcome Group by point, date ) as t
group by point, date order by point
31. Для классов кораблей, калибр орудий которых не менее 16 дюймов, укажите класс и страну.
Select class, country from classes where bore >= '16'
32. Одной из характеристик корабля является половина куба калибра его главных орудий (mw). С точностью до 2 десятичных знаков определите среднее значение mw для кораблей каждой страны, у которой есть корабли в базе данных.
Select country, cast(avg((power(bore,3)/2)) as numeric(6,2)) as weight
from (select country, classes.class, bore, name from classes left join ships on classes.class=ships.class
union all
select distinct country, class, bore, ship from classes t1 left join outcomes t2 on t1.class=t2.ship
where ship=class and ship not in (select name from ships) ) a
where name!='null' group by country
33. Укажите корабли, потопленные в сражениях в Северной Атлантике (North Atlantic). Вывод: ship.
Select ship from outcomes where result = 'sunk' and battle = 'North Atlantic'
34. По Вашингтонскому международному договору от начала 1922 г. запрещалось строить линейные корабли водоизмещением более 35 тыс.тонн. Укажите корабли, нарушившие этот договор (учитывать только корабли c известным годом спуска на воду). Вывести названия кораблей.
Select distinct name from classes, ships where launched >=1922 and displacement>35000 and type='bb' and
ships.class = classes.class
35. В таблице Product найти модели, которые состоят только из цифр или только из латинских букв (A-Z, без учета регистра).
Вывод: номер модели, тип модели.
Select model, type from product where model NOT LIKE '%[^0-9]%' OR model NOT LIKE '%[^a-z]%'
36. Перечислите названия головных кораблей, имеющихся в базе данных (учесть корабли в Outcomes).
Select distinct c.class from classes c join outcomes o on c.class = o.ship
union
Select distinct c.class from classes c join ships s on c.class = s.class where s.class = s.name
37. Найдите классы, в которые входит только один корабль из базы данных (учесть также корабли в Outcomes).
select class from (Select distinct c.class, o.ship as name from classes c join outcomes o on c.class = o.ship
union
Select distinct c.class,s.name from classes c join ships s on c.class = s.class) as main_class group by class having count(main_class.name) = 1
Select class from(select class, name from ships
union
select class, ship as name from outcomes join classes on classes.class = outcomes.ship) as A
group by class having count(A.name)=1
38. Найдите страны, имевшие когда-либо классы обычных боевых кораблей ('bb') и имевшие когда-либо классы крейсеров ('bc').
SELECT country FROM classes where type = 'bb'
INTERSECT
SELECT country FROM classes where type = 'bc'
39. Найдите корабли, `сохранившиеся для будущих сражений`; т.е. выведенные из строя в одной битве (damaged), они участвовали в другой, произошедшей позже.
select distinct B.ship
from(select * from outcomes left join battles on battle=name where result='damaged') as B
where exists (select ship from outcomes left join battles on battle=name
where ship=B.ship and B.date
FROM battles join outcomes on outcomes.battle = battles.name
WHERE battles.date > b.date and outcomes.ship = o.ship)
select distinct o.ship from outcomes o join battles b on o.battle = b.name where o.result = 'damaged' AND
EXISTS (SELECT battles.date
FROM battles join outcomes on outcomes.battle = battles.name
WHERE battles.date > b.date and outcomes.ship = o.ship)
40. Найти производителей, которые выпускают более одной модели, при этом все выпускаемые производителем модели являются продуктами одного типа. Вывести: maker, type
select maker, type from product
where maker in (SELECT maker FROM
(SELECT maker, type FROM Product GROUP BY maker, type) Alias
group by maker having count(maker) = 1) group by maker, type having count(type)>1
SELECT distinct maker, max(type) as type
FROM product
GROUP BY maker
HAVING COUNT(distinct type) = 1 AND COUNT(model) > 1
41. Для каждого производителя, у которого присутствуют модели хотя бы в одной из таблиц PC, Laptop или Printer,
определить максимальную цену на его продукцию.
Вывод: имя производителя, если среди цен на продукцию данного производителя присутствует NULL, то выводить для этого производителя NULL,
иначе максимальную цену.
with D as
(select model, price from PC
union
select model, price from Laptop
union
select model, price from Printer)
Select distinct P.maker,
CASE WHEN MAX(CASE WHEN D.price IS NULL THEN 1 ELSE 0 END) = 0 THEN
MAX(D.price) END
from Product P
right join D on P.model=D.model
group by P.maker
42. Найдите названия кораблей, потопленных в сражениях, и название сражения, в котором они были потоплены.
Select ship, battle from outcomes where result = 'sunk'
43. Укажите сражения, которые произошли в годы, не совпадающие ни с одним из годов спуска кораблей на воду.
select name from battles where DATEPART(yy, date) not in (select DATEPART(yy, date)
from battles join ships on DATEPART(yy, date)=launched)
SELECT distinct b.name
FROM Outcomes o right JOIN
battles b ON o.ship = b.name where DATEPART(yy, b.date) not in (select launched from ships)
44. Найдите названия всех кораблей в базе данных, начинающихся с буквы R.
Select name from ships where name like 'R%'
union
Select ship from outcomes where ship like 'R%'
45. Найдите названия всех кораблей в базе данных, состоящие из трех и более слов (например, King George V).
Считать, что слова в названиях разделяются единичными пробелами, и нет концевых пробелов.
Select name from ships where name like '% % %'
union
Select ship from outcomes where ship like '% % %'
46. Для каждого корабля, участвовавшего в сражении при Гвадалканале (Guadalcanal), вывести название, водоизмещение и число орудий.
SELECT DISTINCT ship, displacement, numguns
FROM classes LEFT JOIN ships ON classes.class=ships.class RIGHT JOIN outcomes ON classes.class=ship OR ships.name=ship
WHERE battle='Guadalcanal'
47. Определить страны, которые потеряли в сражениях все свои корабли.
WITH out AS (SELECT *
FROM outcomes JOIN (SELECT ships.name s_name, classes.class s_class, classes.country s_country
FROM ships FULL JOIN classes
ON ships.class = classes.class
) u
ON outcomes.ship=u.s_class
UNION
SELECT *
FROM outcomes JOIN (SELECT ships.name s_name, classes.class s_class, classes.country s_country
FROM ships FULL JOIN classes
ON ships.class = classes.class
) u
ON outcomes.ship=u.s_name)
SELECT fin.country
FROM (
SELECT DISTINCT t.country, COUNT(t.name) AS num_ships
FROM (
select distinct c.country, s.name
from classes c
inner join Ships s on s.class= c.class
union
select distinct c.country, o.ship
from classes c
inner join Outcomes o on o.ship= c.class) t
GROUP BY t.country
SELECT out.s_country, COUNT(out.ship) AS num_ships
FROM out
WHERE out.result='sunk'
GROUP BY out.s_country) fin
48. Найдите классы кораблей, в которых хотя бы один корабль был потоплен в сражении.
select class
from classes t1 left join outcomes t2 on t1.class=t2.ship where result='sunk'
union
select class
from ships left join outcomes on ships.name=outcomes.ship where result='sunk'
49. Найдите названия кораблей с орудиями калибра 16 дюймов (учесть корабли из таблицы Outcomes).
select s.name from ships s join classes c on s.name=c.class or s.class = c.class where c.bore = 16
union
select o.ship from outcomes o join classes c on o.ship=c.class where c.bore = 16
50. Найдите сражения, в которых участвовали корабли класса Kongo из таблицы Ships.
Select distinct o.battle from ships s join outcomes o on s.name = o.ship where s.class = 'kongo'
51. Найдите названия кораблей, имеющих наибольшее число орудий среди всех имеющихся кораблей такого же водоизмещения (учесть корабли из таблицы Outcomes).
select NAME from(select name as NAME, displacement, numguns from ships inner join classes on ships.class = classes.class union select ship as NAME, displacement, numguns from outcomes inner join classes on outcomes.ship= classes.class) as d1 inner join (select displacement, max(numGuns) as numguns from ( select displacement, numguns from ships inner join classes on ships.class = classes.class union select displacement, numguns from outcomes inner join classes on outcomes.ship= classes.class) as f group by displacement) as d2 on d1.displacement=d2.displacement and d1.numguns =d2.numguns
52. Определить названия всех кораблей из таблицы Ships, которые могут быть линейным японским кораблем, имеющим число главных орудий не менее девяти, калибр орудий менее 19 дюймов и водоизмещение не более 65 тыс.тонн
select s.name from ships s join classes c on s.class = c.class where country = 'japan' and (numGuns >= '9' or numGuns is null) and (bore < '19' or bore is null) and (displacement
53. Определите среднее число орудий для классов линейных кораблей. Получить результат с точностью до 2-х десятичных знаков.
Select CAST(AVG(numguns*1.0) AS NUMERIC(6,2)) as Avg_nmg from classes where type = 'bb'
54. С точностью до 2-х десятичных знаков определите среднее число орудий всех линейных кораблей (учесть корабли из таблицы Outcomes).
select CAST(AVG(numguns*1.0) AS NUMERIC(6,2)) as AVG_nmg from (select ship, numguns, type from Outcomes join classes on ship = class
union
select name, numguns, type from ships s join classes c on c.class = s.class) as x where type = 'bb'
55. Для каждого класса определите год, когда был спущен на воду первый корабль этого класса. Если год спуска на воду головного корабля неизвестен, определите минимальный год спуска на воду кораблей этого класса. Вывести: класс, год.
Select c.class, min(s.launched) from classes c left join ships s on c.class = s.class group by c.class
56. Для каждого класса определите число кораблей этого класса, потопленных в сражениях. Вывести: класс и число потопленных кораблей.
SELECT c.class, COUNT(s.ship)
FROM classes c
LEFT JOIN (SELECT o.ship, sh.class
FROM outcomes o
LEFT JOIN ships sh ON sh.name = o.ship
WHERE o.result = 'sunk') AS s ON s.class = c.class OR s.ship = c.class
GROUP BY c.class
Перед чтением см. новые уроки раздела "Важное", которые появились выше.
- Урок №
новая вкладка с new.code.mu
часть 1 - Урок №
новая вкладка с new.code.mu
часть 2 - Урок №
новая вкладка с new.code.mu
часть 3 - Урок №
новая вкладка с new.code.mu
часть 4 - Урок №
новая вкладка с new.code.mu
часть 5 - Урок №
новая вкладка ютуб
пагинация
Аутентификация
На AVG
Найдите в таблице workers среднюю зарплату.
Найдите в таблице workers средний возраст.
Абстрактные классы и интерфейсы
- Урок №
новая вкладка с new.code.mu
Абстрактные классы - Урок №
новая вкладка с new.code.mu
Введение в интерфейсы - Урок №
новая вкладка с new.code.mu
Применение интерфейсов - Урок №
новая вкладка с new.code.mu
Параметры методов в интерфейсе - Урок №
новая вкладка с new.code.mu
Объявление конструктора в интерфейсе - Урок №
новая вкладка с new.code.mu
Наследование интерфейсов друг от друга - Урок №
новая вкладка с new.code.mu
Интерфейсы и instanceof - Урок №
новая вкладка с new.code.mu
Реализация нескольких интерфейсов - Урок №
новая вкладка с new.code.mu
Наследование от класса и реализация интерфейса - Урок №
новая вкладка с new.code.mu
Константы в интерфейсах
Новый урок в данном разделе
Задача
Задача. Найдите в таблице workers минимальный возраст.
На работу с частью даты
Для решения задач данного блока вам понадобятся следующие SQL команды и функции: SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, DAYOFWEEK, WEEKDAY.
Выберите из таблицы workers все записи за 2016 год.
Выберите из таблицы workers все записи за март любого года.
Выберите из таблицы workers все записи за третий день месяца.
Выберите из таблицы workers все записи за пятый день апреля любого года.
Выберите из таблицы workers все записи за следующие дни любого месяца: 1, 7, 11, 12, 15, 19, 21, 29.
Выберите из таблицы workers все записи за вторник.
Выберите из таблицы workers все записи за первую декаду любого месяца 2016 года.
Выберите из таблицы workers все записи, в которых день меньше месяца.
При выборке из таблицы workers запишите день, месяц и год в отдельные поля.
При выборке из таблицы workers создайте новое поле today, в котором будет номер текущего дня недели.
ООП Магия
Задача
Задача. Вставьте в таблицу workers запись с полем date с текущим моментом времени в формате 'год-месяц-день часы:минуты:секунды'.
На SUM
Найдите в таблице workers суммарную зарплату.
Найдите в таблице workers суммарную зарплату для людей в возрасте от 21 до 25.
Найдите в таблице workers суммарную зарплату для id, равного 1, 2, 3 и 5.
На LEFT, RIGHT, SUBSTRING
Для решения задач данного блока вам понадобятся следующие SQL команды и функции: LEFT, RIGHT, SUBSTRING.
При выборке из таблицы workers получите первые 5 символов поля description.
При выборке из таблицы workers получите последние 5 символов поля description.
При выборке из таблицы workers получите из поля description символы со второго по десятый.
Движок PHP
На математические операции
При выборке из таблицы workers создайте новое поле res, в котором будет число 3.
При выборке из таблицы workers создайте новое поле res, в котором будет строка 'eee'.
При выборке из таблицы workers создайте новое поле 3, в котором будет число 3.
При выборке из таблицы workers создайте новое поле res, в котором будет лежать сумма зарплаты и возраста.
При выборке из таблицы workers создайте новое поле res, в котором будет лежать разность зарплаты и возраста.
При выборке из таблицы workers создайте новое поле res, в котором будет лежать произведение зарплаты и возраста.
При выборке из таблицы workers создайте новое поле res, в котором будет лежать среднее арифметическое зарплаты и возраста.
Выберите из таблицы workers все записи, в которых сумма дня и месяца меньше 10-ти.
На AS
Выберите из таблицы workers все записи так, чтобы вместо id было userId, вместо login – userLogin, вместо salary - userSalary.
Практика: классы как набор методов
- Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс ArrayConvertor - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс TagHelper - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс FormHelper - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс TableHelper - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс SessionShell - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс CookieShell - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс FileManipulator - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс databaseShell TODO cart корзина flash шаблонизатор роутер контроллер кеш логи фалидатор
Перед решением задач изучите теорию к данному уроку.
Задача
Задача. Выберите из таблицы workers записи c зарплатой от 500 до 1500.
На BETWEEN
Выберите из таблицы workers записи c зарплатой от 100 до 1000.
Выберите из таблицы workers записи c id от 3 до 10 и зарплатой от 300 до 500.
Примеры решения задач
Задача
Задача. Выберите из таблицы workers записи, в которых минуты больше секунд.
Задача
Задача. При выборке из таблицы workers прибавьте к дате 3 дня и отнимите 2 часа.
На DISTINCT
Выберите из таблицы workers все записи так, чтобы туда попали только записи с разной зарплатой (без дублей).
Получите SQL запросом все возрасты без дублирования.
Задача
Задача. При выборке из таблицы workers прибавьте к дате 1 год.
Читайте также: