Задание: 1
Текст задания:Найдите номер модели, скорость и размер жесткого диска для всех ПК стоимостью менее 500 дол. Вывести: model, speed и hd.
Решение:
SELECT model, speed, hdFROM pcWHERE price <500Задание: 2
Текст задания:Найдите производителей принтеров.
Вывести: maker.
Решение:
SELECT DISTINCT makerFROM productWHERE type = 'printer'Задание: 3
Текст задания:Найдите номер модели, объем памяти и размеры экранов ПК-блокнотов, цена которых превышает 1000 дол.
Решение:
SELECT model, ram, screenFROM laptopWHERE price > 1000;Задание: 4
Текст задания:Найдите все записи таблицы Printer для цветных принтеров.
Решение:
SELECT *FROM printerWHERE color='y';Задание: 5
Текст задания:Найдите номер модели, скорость и размер жесткого диска ПК, имеющих 12x или 24x CD и цену менее 600 дол.
Решение:
SELECT model, speed, hdFROM pcWHERE cd IN ('12x', '24x') AND price < 600;Задание: 6
Текст задания:Укажите производителя и скорость для тех ПК-блокнотов, которые имеют жесткий диск объемом не менее 10 Гбайт.
Решение:
SELECT maker, speedFROM product INNER JOIN laptop ON Product.model = Laptop.modelWHERE laptop.hd >=10;Задание: 7
Текст задания:Найдите номера моделей и цены всех продуктов (любого типа), выпущенных производителем B (латинская буква).
Решение:
SELECT DISTINCT product.model, pc.priceFROM Product JOIN pc ON product.model = pc.model WHERE maker = 'B'UNIONSELECT DISTINCT product.model, laptop.priceFROM product JOIN laptop ON product.model=laptop.model WHERE maker='B'UNIONSELECT DISTINCT product.model, printer.priceFROM product JOIN printer ON product.model=printer.model WHERE maker='B';Задание: 8
Текст задания:Найдите производителя, выпускающего ПК, но не ПК-блокноты.
Решение:
SELECT DISTINCT makerFROM productWHERE type = 'PC'EXCEPTSELECT DISTINCT makerFROM productWHERE type= 'Laptop';Анализ плана выполнения запроса:
Стоимость: 0.020371463149786.
Количество операций: 5.
Задание: 9
Текст задания:Найдите производителей ПК с процессором не менее 450 Мгц. Вывести: Maker.
Решение:
SELECT DISTINCT makerFROM product JOIN pc ON product.model=pc.modelWHERE pc.speed>=450;Задание: 10
Текст задания:Найдите принтеры, имеющие самую высокую цену. Вывести: model, price.
Решение:
SELECT model, priceFROM printerWHERE price =(SELECT MAX(price) FROM printer);Задание: 11
Текст задания:Найдите среднюю скорость ПК.
Решение:
SELECT AVG(speed)FROM pc;Задание: 12
Текст задания:Найдите среднюю скорость ПК-блокнотов, цена которых превышает 1000 дол.
Решение:
SELECT AVG(speed)FROM laptopWHERE price>1000;Задание: 13
Текст задания:Найдите среднюю скорость ПК, выпущенных производителем A.
Решение:
SELECT AVG(speed)FROM pc LEFT JOIN product ON product.model=pc.modelWHERE product.maker='A';Задание: 14
Текст задания:Для каждого значения скорости найдите среднюю стоимость ПК с такой же скоростью процессора.
Вывести: скорость, средняя цена.
Решение:
SELECT speed, AVG(price)FROM pcGROUP BY speed;Задание: 15
Текст задания:Найдите размеры жестких дисков, совпадающих у двух и более PC.
Вывести: HD.
Решение:
SELECT hdFROM pcGROUP BY hdHAVING count(hd)>1;Задание: 16
Текст задания:Найдите пары моделей PC, имеющих одинаковые скорость и RAM. В результате каждая пара указывается только один раз, т.е. (i,j), но не (j,i).
Порядок вывода: модель с большим номером, модель с меньшим номером, скорость и RAM.
Решение:
SELECT distinct pc1.model, pc2.model, pc1.speed, pc1.ramFROM pc AS pc1, pc AS pc2WHERE pc1.model>pc2.model AND pc1.speed=pc2.speed AND pc1.ram=pc2.ram;Задание: 17
Текст задания:Найдите модели ПК-блокнотов, скорость которых меньше скорости любого из ПК.
Вывести: type, model, speed.
Решение:
SELECT DISTINCT product.type, laptop.model, laptop.speedFROM laptop, productWHERE speed <(SELECT MIN(speed) FROM pc)AND product.type='Laptop';Задание: 18
Текст задания:Найдите производителей самых дешевых цветных принтеров.
Вывести: maker, price.
Решение:
SELECT DISTINCT maker, priceFROM product JOIN printer ON product.model=printer.modelWHERE price=(SELECT MIN(price)FROM printerWHERE color='y')AND color='y';Задание: 19
Текст задания:Для каждого производителя найдите средний размер экрана выпускаемых им ПК-блокнотов.
Вывести: maker, средний размер экрана.
Решение:
SELECT maker, AVG(screen)FROM product JOIN laptop ON product.model=laptop.modelGROUP BY maker;Задание: 20
Текст задания:Найдите производителей, выпускающих по меньшей мере три различных модели ПК.
Вывести: Maker, число моделей.
Решение:
SELECT maker, COUNT(model)FROM productWHERE type='pc'GROUP BY makerHAVING COUNT(model)>=3;Задание: 21
Текст задания:Найдите максимальную цену ПК, выпускаемых каждым производителем.
Вывести: maker, максимальная цена.
Решение:
SELECT maker, MAX(price)FROM product JOIN pc ON product.model=pc.modelGROUP BY maker;Задание: 22
Текст задания:Для каждого значения скорости ПК, превышающего 600 МГц, определите среднюю цену ПК с такой же скоростью.
Вывести: speed, средняя цена.
Решение:
SELECT speed, AVG(price)FROM pc WHERE speed>600GROUP BY speed;Задание: 23
Текст задания:Найдите производителей, которые производили бы как ПК со скоростью не менее 750 МГц, так и ПК-блокноты со скоростью не менее 750 МГц.
Вывести: Maker.
Решение:
SELECT DISTINCT makerFROM product t1 JOIN pc t2 ON t1.model=t2.modelWHERE speed>=750 AND maker IN(SELECT makerFROM product t1 JOIN laptop t2 ON t1.model=t2.modelWHERE speed>=750);Задание: 24
Текст задания:Перечислите номера моделей любых типов, имеющих самую высокую цену по всей имеющейся в базе данных продукции.
Решение:
SELECT modelFROM ( SELECT model, price FROM pc UNION SELECT model, price FROM Laptop UNION SELECT model, price FROM Printer) t1WHERE price = ( SELECT MAX(price) FROM ( SELECT price FROM pc UNION SELECT price FROM Laptop UNION SELECT price FROM Printer ) t2 );Задание: 25
Текст задания:Найдите производителей принтеров, которые производят ПК с наименьшим объемом RAM и с самым быстрым процессором среди всех ПК, имеющих наименьший объем RAM.
Вывести: Maker.
Решение:
SELECT DISTINCT makerFROM productWHERE model IN (SELECT modelFROM pcWHERE ram = ( SELECT MIN(ram) FROM pc )AND speed = ( SELECT MAX(speed) FROM pc WHERE ram = ( SELECT MIN(ram) FROM pc ) ))ANDmaker IN (SELECT makerFROM productWHERE type='printer');Задание: 26
Текст задания:Найдите среднюю цену ПК и ПК-блокнотов, выпущенных производителем A (латинская буква).
Вывести: одна общая средняя цена.
Решение:
SELECT AVG(price)FROM (SELECT code, price, pc.model, ram, hdFROM pcWHERE model IN (SELECT modelFROM productWHERE maker='a')UNIONSELECT code, price, laptop.model, ram, hdFROM laptopWHERE model IN (SELECT modelFROM productWHERE maker='a')) a;Задание: 27
Текст задания:Найдите средний размер диска ПК каждого из тех производителей, которые выпускают и принтеры.
Вывести: maker, средний размер HD.
Решение:
SELECT maker, AVG(hd)FROM product t1 JOIN pc t2 ON t1.model=t2.modelWHERE maker IN (SELECT makerFROM productWHERE type='printer')GROUP BY maker;Задание: 28
Текст задания:Найдите средний размер диска ПК (одно значение для всех) тех производителей, которые выпускают и принтеры.
Вывести: средний размер HD.
Решение:
SELECT AVG(hd)FROM product t1 JOIN pc t2 ON t1.model=t2.modelWHERE maker IN (SELECT makerFROM productWHERE type='printer');Задание: 29
Текст задания:В предположении, что приход и расход денег на каждом пункте приема фиксируется не чаще одного раза в день [т.е. первичный ключ (пункт, дата)], написать запрос с выходными данными (пункт, дата, приход, расход). Использовать таблицы Income_o и Outcome_o.
Решение:
SELECT t1.point, t1.date, inc, `out`FROM income_o t1 LEFT JOIN outcome_o t2 USING(point,date)UNIONSELECT t2.point, t2.date, inc, `out`FROM income_o t1 RIGHT JOIN outcome_o t2 USING(point,date);Задание: 30
Текст задания:В предположении, что приход и расход денег на каждом пункте приема фиксируется произвольное число раз (первичным ключом в таблицах является столбец code), требуется получить таблицу, в которой каждому пункту за каждую дату выполнения операций будет соответствовать одна строка.
Вывод: point, date, суммарный расход пункта за день (out), суммарный приход пункта за день (inc). Отсутствующие значения считать неопределенными (NULL).
Решение:
SELECT t1.point, t1.date, `out`, incFROM (SELECT point, date, SUM(inc) AS incFROM incomeGROUP BY point, date) t1 LEFT JOIN (SELECT point, date, SUM(`out`) AS `out`FROM outcomeGROUP BY point, date) t2USING(point,date)UNIONSELECT t2.point, t2.date, `out`, incFROM (SELECT point, date, SUM(inc) AS inc FROM incomeGROUP BY point, date) t1 RIGHT JOIN (SELECT point, date, SUM(`out`) AS `out`FROM outcomeGROUP BY point, date) t2USING(point,date);Задание: 31
Текст задания:Для классов кораблей, калибр орудий которых не менее 16 дюймов, укажите класс и страну.
Решение:
SELECT class, countryFROM classesWHERE bore>=16;Задание: 32
Текст задания:Одной из характеристик корабля является половина куба калибра его главных орудий (mw). С точностью до 2 десятичных знаков определите среднее значение mw для кораблей каждой страны, у которой есть корабли в базе данных.
Решение:
Select country, round(avg((pow(bore,3)/2)),2) as weightfrom(select country, class, bore, name from classes left join ships
using(class)union allselect distinct country, class, bore, shipfrom classes t1 left join outcomes t2 on t1.class=t2.shipwhere ship=class and ship not in (select name from ships)) awhere name!='null'group by country;Задание: 33
Текст задания:Укажите корабли, потопленные в сражениях в Северной Атлантике (North Atlantic).
Вывод: ship.
Решение:
Select shipfrom Outcomeswhere battle = 'North Atlantic' and result='sunk';Задание: 34
Текст задания:По Вашингтонскому международному договору от начала 1922 г. запрещалось строить линейные корабли водоизмещением более 35 тыс.тонн. Укажите корабли, нарушившие этот договор (учитывать только корабли c известным годом спуска на воду).
Вывести названия кораблей.
Решение:
Select namefrom classes left join ships using(class)where launched>=1922 and displacement>35000 and type='bb';Задание: 35
Текст задания:В таблице Product найти модели, у которых первый символ представляет собой четную цифру, а последний – нечетную.
При этом первый символ должен быть меньше последнего.
Вывод: номер модели, тип модели, произведение первой и последней цифр в номере модели.
Решение:
SELECT model, type, LEFT(model,1)*RIGHT(model,1)FROM productWHERELEFT(model,1) IN (2,4,6,8)AND RIGHT(model,1) IN (1,3,5,7,9)AND LEFT(model,1)< RIGHT(model,1);Задание: 36
Текст задания:Перечислите названия головных кораблей, имеющихся в базе данных (учесть корабли в Outcomes).
Решение:
Select distinct name from (select name from shipsunionselect ship from outcomes) t1where name in (select class from classes);Задание: 37
Текст задания:Найдите классы, в которые входит только один корабль из базы данных (учесть также корабли в Outcomes).
Решение:
select classfrom(select class, count(name) as cntfrom(select class, name from classes left join ships using(class)union allselect distinct class, shipfrom classes t1 left join outcomes t2 on t1.class=t2.shipwhere ship not in (select name from ships) ) awhere name!='null'group by class) bwhere cnt=1;Задание: 38
Текст задания:Найдите страны, имевшие когда-либо классы обычных боевых кораблей (‘bb’) и имевшие когда-либо классы крейсеров (‘bc’).
Решение:
select distinct countryfrom classeswhere type='bb' and country in(select countryfrom classeswhere type='bc');Задание: 39
Текст задания:Найдите классы, в которые входит только один корабль из базы данных (учесть также корабли в Outcomes).
Решение:
SELECT DISTINCT shipFROM outcomes o1LEFT JOIN Battles b1 ON b1.name=o1.battleWHERE result = 'damaged'and ship IN(SELECT shipFROM outcomes o2LEFT JOIN Battles b2 ON b2.name=o2.battleWHERE o2.ship=o1.shipand b2.date > b1.date);Задание: 40
Текст задания:Найдите класс, имя и страну для кораблей из таблицы Ships, имеющих не менее 10 орудий.
Решение:
SELECT class, name, countryFROM classes LEFT JOIN ships USING(class)WHERE numguns>=10 AND name!='null';Задание: 41
Текст задания:Найдите класс, имя и страну для кораблей из таблицы Ships, имеющих не менее 10 орудий.
Решение:
SELECT 'cd', cdFROM `pc`WHERE code=(SELECT MAX(code) FROM `pc`)UNIONSELECT 'hd', hdFROM `pc`WHERE code=(SELECT MAX(code) FROM `pc`)UNIONSELECT 'model', modelFROM `pc`WHERE code=(SELECT MAX(code) FROM `pc`)UNIONSELECT 'price', priceFROM `pc`WHERE code=(SELECT MAX(code) FROM `pc`)UNIONSELECT 'ram', ramFROM `pc`WHERE code=(SELECT MAX(code) FROM `pc`)UNIONSELECT 'speed', speedFROM `pc`WHERE code=(SELECT MAX(code) FROM `pc`);Задание: 42
Текст задания:Найдите названия кораблей, потопленных в сражениях, и название сражения, в котором они были потоплены.
Решение:
SELECT ship, battleFROM outcomesWHERE result='sunk';Задание: 43
Текст задания:Укажите сражения, которые произошли в годы, не совпадающие ни с одним из годов спуска кораблей на воду.
Решение:
SELECT nameFROM battlesWHERE YEAR(date) NOT IN(SELECT launchedFROM shipsWHERE launched!='null');Задание: 44
Текст задания:Найдите названия всех кораблей в базе данных, начинающихся с буквы R.
Решение:
SELECT *FROM(SELECT nameFROM shipsUNIONSELECT shipFROM outcomes) aWHERE name LIKE 'R%';Задание: 45
Текст задания:Найдите названия всех кораблей в базе данных, состоящие из трех и более слов (например, King George V).
Считать, что слова в названиях разделяются единичными пробелами, и нет концевых пробелов.
Решение:
SELECT *FROM(SELECT nameFROM shipsUNIONSELECT shipFROM outcomes) aWHERE name LIKE '% % %';Задание: 46
Текст задания:Укажите названия, водоизмещение и число орудий кораблей, участвовавших в сражении при Гвадалканале (Guadalcanal).
Решение:
SELECT DISTINCT ship, displacement, numgunsFROM classes LEFT JOIN ships ON classes.class=ships.class RIGHT JOIN
outcomes ON classes.class=ship OR ships.name=shipWHERE battle='Guadalcanal';Задание: 47
Текст задания:Пронумеровать строки из таблицы Product в следующем порядке: имя производителя в порядке убывания числа производимых им моделей (при одинаковом числе моделей имя производителя в алфавитном порядке по возрастанию), номер модели (по возрастанию).
Вывод: номер в соответствии с заданным порядком, имя производителя (maker), модель (model).
Решение:
SELECT count(*), t2.maker, t2.modelFROM(SELECT maker, model, cFROM ProductJOIN (SELECT count(model) c, maker mFROM productGROUP BY maker) tON maker = m) t2JOIN
(SELECT maker, model, cFROM ProductJOIN (SELECT count(model) c, maker mFROM productGROUP BY maker) t1ON maker = m) t3ON t3.c>t2.c OR (t3.c=t2.c AND (t3.maker<="t2.model)))<br"> GROUP BY t2.maker, t2.model;Задание: 48
Текст задания:Найдите классы кораблей, в которых хотя бы один корабль был потоплен в сражении.
Решение:
select classfrom classes t1 left join outcomes t2 on t1.class=t2.ship where result='sunk'unionselect classfrom ships left join outcomes on ships.name=outcomes.ship where
result='sunk'Задание: 49
Текст задания:Найдите названия кораблей с орудиями калибра 16 дюймов (учесть корабли из таблицы Outcomes)..
Решение:
Select namefrom classes left join ships using(class)where bore=16 and name!='null'unionselect shipfrom outcomes t1 right join classes t2 on t1.ship=t2.class where
ship=class and bore=16Задание: 50
Текст задания:Найдите сражения, в которых участвовали корабли класса Kongo из таблицы Ships.
Решение:
Select battlefrom outcomes where ship in(select name from classes left join ships using(class) where
class='Kongo')Задание: 51
Текст задания:Найдите названия кораблей, имеющих наибольшее число орудий среди всех имеющихся кораблей такого же водоизмещения (учесть корабли из таблицы Outcomes).
Решение:
SELECT nameFROM (SELECT O.ship AS name, numGuns, displacementFROM Outcomes O INNER JOINClasses C ON O.ship = C.class ANDO.ship NOT IN (SELECT nameFROM Ships)UNIONSELECT S.name AS name, numGuns, displacementFROM Ships S INNER JOINClasses C ON S.class = C.class) OS INNER JOIN(SELECT MAX(numGuns) AS MaxNumGuns, displacementFROM Outcomes O INNER JOINClasses C ON O.ship = C.class ANDO.ship NOT IN (SELECT nameFROM Ships)GROUP BY displacementUNIONSELECT MAX(numGuns) AS MaxNumGuns, displacementFROM Ships S INNER JOINClasses C ON S.class = C.classGROUP BY displacement) GD ON OS.numGuns = GD.MaxNumGuns ANDOS.displacement = GD.displacement;Задание: 52
Текст задания:Определить названия всех кораблей из таблицы Ships, которые могут быть линейным японским кораблем,
имеющим число главных орудий не менее девяти, калибр орудий менее 19 дюймов и водоизмещение не более 65 тыс.тонн.
Решение:
Select namefrom classes t1 left join ships t2 using(class)where country='japan' and (numguns>=9 or numguns is NULL) and
(bore<19 or bore is NULL) and (displacement<=65000 or displacement is
NULL) and type='bb';Задание: 53
Текст задания:Определите среднее число орудий для классов линейных кораблей.
Получить результат с точностью до 2-х десятичных знаков.
Решение:
select round(avg(numGuns),2)from classes where type='bb';Задание: 54
Текст задания:С точностью до 2-х десятичных знаков определите среднее число орудий всех линейных кораблей (учесть корабли из таблицы Outcomes).
Решение:
select round(avg(numguns),2)from (Select numguns, namefrom classes left join ships using(class)where type='bb' and name!='null' and class!='null'union allselect distinct numguns, shipfrom classes left join outcomes on classes.class=outcomes.shipwhere ship not in (select name from ships) and class!='null' and
type='bb' )a;Задание: 55
Текст задания:Для каждого класса определите год, когда был спущен на воду первый корабль этого класса. Если год спуска на воду головного корабля неизвестен, определите минимальный год спуска на воду кораблей этого класса.
Вывести: класс, год.
Решение:
select class, min(launched)from classes left join ships using(class)group by class;Задание: 56
Текст задания:Для каждого класса определите число кораблей этого класса, потопленных в сражении.
Вывести: класс и число потопленных кораблей.
Решение:
SELECT class, IF(c,c,0)FROM (SELECT class FROM classes) x2 LEFT JOIN(SELECT class, COUNT(*) c FROM (SELECT class, result FROMclasses LEFT JOIN outcomes ON classes.class=outcomes.shipWHERE result='sunk'UNION ALLSELECT classFROM ships LEFT JOIN outcomes ON ships.name=outcomes.shipWHERE result='sunk' AND ships.name NOT IN(SELECT classFROM classes LEFT JOIN outcomes ON classes.class=outcomes.shipWHERE result='sunk')) x1group by class) c1using(class)Задание: 57
Текст задания:Для классов, имеющих потери в виде потопленных кораблей и не менее 3 кораблей в базе данных, вывести имя класса и число потопленных кораблей.
Решение:
SELECT class, COUNT(result) AS sunkFROM (SELECT class, resultFROM Ships LEFT JOINOutcomes ON ship=name ANDresult = 'sunk' ANDnot(name=class)union allSELECT distinct class, resultFROM ClassesJOIN OutcomesON class=ship and result='sunk') TGROUP BY classHAVING COUNT(class) > 2 ANDCOUNT(result) > 0Задание: 58
Текст задания:Для каждого типа продукции и каждого производителя из таблицы Product c точностью до двух десятичных знаков найти процентное отношение числа моделей данного типа данного производителя к общему числу моделей этого производителя.
Вывод: maker, type, процентное отношение числа моделей данного типа к общему числу моделей производителя.
СУБД: MSSQL.
Решение:
SELECT m, t,CAST(100.0*cc/cc1 AS NUMERIC(5,2))from(SELECT m, t, sum(c) cc from(SELECT distinct maker m, 'PC' t, 0 c from productunion allSELECT distinct maker, 'Laptop', 0 from productunion allSELECT distinct maker, 'Printer', 0 from productunion allSELECT maker, type, count(*) from productgroup by maker, type) as ttgroup by m, t) tt1JOIN (SELECT maker, count(*) cc1 from product group by maker) tt2ON m=makerЗадание: 59
Текст задания:Посчитать остаток денежных средств на каждом пункте приема для базы данных с отчетностью не чаще одного раза в день.
Вывод: пункт, остаток.
СУБД: MSSQL.
Решение:
SELECT c1, c2-(CASEWHEN o2 is null THEN 0ELSE o2END)from(SELECT point c1, sum(inc) c2 FROM income_ogroup by point) as t1left join(SELECT point o1, sum(out) o2 FROM outcome_ogroup by point) as t2on c1=o1Задание: 60
Текст задания:Посчитать остаток денежных средств на начало дня 15/04/01 на каждом пункте приема для базы данных с отчетностью не чаще одного раза в день.
Вывод: пункт, остаток.
Замечание. Не учитывать пункты, информации о которых нет до указанной даты.
СУБД: MSSQL.
Решение:
SELECT c1, c2-(CASEWHEN o2 is null THEN 0ELSE o2END)from(SELECT point c1, sum(inc) c2 FROM income_owhere date<'2001-04-15'group by point) as t1left join(SELECT point o1, sum(out) o2 FROM outcome_owhere date<'2001-04-15'group by point) as t2on c1=o1Задание: 61
Текст задания:Посчитать остаток денежных средств на всех пунктах приема для базы данных с отчетностью не чаще одного раза в день.
СУБД: MSSQL.
Решение:
SELECT sum(inc)-(SELECT sum(out) FROM Outcome_o) FROM Income_oЗадание: 62
Текст задания:Посчитать остаток денежных средств на всех пунктах приема на начало дня 15/04/01 для базы данных с отчетностью не чаще одного раза в день.
СУБД: MSSQL.
Решение:
SELECT(SELECT sum(inc) FROM Income_o WHERE date<'2001-04-15')-(SELECT sum(out) FROM Outcome_o WHERE date<'2001-04-15')AS remainЗадание: 63
Текст задания:Определить имена разных пассажиров, когда-либо летевших на одном и том же месте более одного раза.
Решение:
SELECT name FROM PassengerWHERE ID_psg in(SELECT ID_psg FROM Pass_in_tripGROUP BY place, ID_psgHAVING count(*)>1)Задание: 64
Текст задания:Используя таблицы Income и Outcome, для каждого пункта приема определить дни, когда был приход, но не было расхода и наоборот.
Вывод: пункт, дата, тип операции (inc/out), денежная сумма за день.
СУБД: MSSQL.
Решение:
SELECT i1.point, i1.date, 'inc', sum(inc) FROM Income,(SELECT point, date FROM IncomeEXCEPTSELECT Income.point, Income.date FROM IncomeJOIN Outcome ON (Income.point=Outcome.point) AND(Income.date=Outcome.date)) AS i1WHERE i1.point=Income.point AND i1.date=Income.dateGROUP BY i1.point, i1.dateUNIONSELECT o1.point, o1.date, 'out', sum(out) FROM Outcome,(SELECT point, date FROM OutcomeEXCEPTSELECT Income.point, Income.date FROM IncomeJOIN Outcome ON (Income.point=Outcome.point) AND(Income.date=Outcome.date)) AS o1WHERE o1.point=Outcome.point AND o1.date=Outcome.dateGROUP BY o1.point, o1.dateЗадание: 65
Текст задания:Пронумеровать уникальные пары {maker, type} из Product, упорядочив их следующим образом:
- имя производителя (maker) по возрастанию;
- тип продукта (type) в порядке PC, Laptop, Printer.
Если некий производитель выпускает несколько типов продукции, то выводить его имя только в первой строке;
остальные строки для ЭТОГО производителя должны содержать пустую строку символов (»).
СУБД: MSSQL.
Решение:
SELECT row_number() over(ORDER BY maker,s),t, type FROM(SELECT maker,type,CASEWHEN type='PC'THEN 0WHEN type='Laptop'THEN 1ELSE 2END AS s,CASEWHEN type='Laptop' AND (maker in (SELECT maker FROM Product WHEREtype='PC'))THEN ''WHEN type='Printer' AND ((maker in (SELECT maker FROM Product WHEREtype='PC')) OR (maker in (SELECT maker FROM Product WHEREtype='Laptop')))THEN ''ELSE makerEND AS tFROM ProductGROUP BY maker,type) AS t1ORDER BY maker, sЗадание: 66
Текст задания:Для всех дней в интервале с 01/04/03 по 07/04/03 определить число рейсов из Rostov.
Вывод: дата, количество рейсов.
СУБД: MSSQL.
Решение:
SELECT date, max(c) FROM(SELECT date,count(*) AS c FROM Trip,(SELECT trip_no,date FROM Pass_in_trip WHERE date>='2003-04-01' AND
date<='2003-04-07' GROUP BY trip_no, date) AS t1WHERE Trip.trip_no=t1.trip_no AND town_from='Rostov'GROUP BY dateUNION ALLSELECT '2003-04-01',0UNION ALLSELECT '2003-04-02',0UNION ALLSELECT '2003-04-03',0UNION ALLSELECT '2003-04-04',0UNION ALLSELECT '2003-04-05',0UNION ALLSELECT '2003-04-06',0UNION ALLSELECT '2003-04-07',0) AS t2GROUP BY dateЗадание: 67
Текст задания:Найти количество маршрутов, которые обслуживаются наибольшим числом рейсов.
Замечания.
1) A – B и B – A считать РАЗНЫМИ маршрутами.
2) Использовать только таблицу Trip.
СУБД: MSSQL.
Решение:
select count(*) from(SELECT TOP 1 WITH TIES count(*) c, town_from, town_to from tripgroup by town_from, town_toorder by c desc) as tЗадание: 68
Текст задания:Найти количество маршрутов, которые обслуживаются наибольшим числом рейсов.
Замечания.
1) A – B и B – A считать ОДНИМ И ТЕМ ЖЕ маршрутом.
2) Использовать только таблицу Trip.
СУБД: MSSQL.
Решение:
select count(*) from (select TOP 1 WITH TIES sum(c) cc, c1, c2 from (SELECT count(*) c, town_from c1, town_to c2 from tripwhere town_from>=town_togroup by town_from, town_tounion allSELECT count(*) c,town_to, town_from from tripwhere town_to>town_fromgroup by town_from, town_to) as tgroup by c1,c2order by cc desc) as ttЗадание: 72
Текст задания:Среди тех, кто пользуется услугами только какой-нибудь одной компании, определить имена разных пассажиров, летавших чаще других.
Вывести: имя пассажира и число полетов.
СУБД: MSSQL.
Решение:
select TOP 1 WITH TIES name, c3 from passengerjoin(select c1, max(c3) c3 from(select pass_in_trip.ID_psg c1, Trip.ID_comp c2, count(*) c3 from
pass_in_tripjoin trip on trip.trip_no=pass_in_trip.trip_nogroup by pass_in_trip.ID_psg, Trip.ID_comp) as tgroup by c1having count(*)=1) as tton ID_psg=c1order by c3 descЗадание: 92
Текст задания:Выбрать все белые квадраты, которые окрашивались только из баллончиков,
пустых к настоящему времени.
Вывести имя квадрата.
СУБД:
Решение:
SELECT Q_NAME FROM utQWHERE Q_ID in(SELECT B_Q_ID FROM utBWHERE B_V_ID IN(SELECT V_ID FROM utV, utBWHERE V_ID=B_V_IDGROUP BY V_IDHAVING sum(B_VOL)=255)GROUP BY B_Q_IDHAVING sum(B_VOL)=255*3)Rainbow Circles для Twitter
Rainbow Circles. Нескучная радуга для TwitterAnother fun rainbow interaction circle generator for Twitter!
🌈Rainbow Circles - This is a program for generating your social circle on Twitter Find your best friends on Twitter Create your own Twitter social circle and post it. How do I post a circle on Twitter? - On the main screen of the application, enter your Twitter username, you can also specify the name of another user; - Click on the "Generate" button; - If the user exists, as well as there is access to the Internet, the program will start collecting information on the specified user: user activity history, likes, reply, retweets The program does not require Twitter authorization! - Official Twitter API is used - Note: This tool is not directly related to the Twitter service. Please do not use the program if you do not understand its purpose.
Еще один нескучный генератор радужного круга взаимодействия для твиттер!
🌈RainbowCircles - Это программа для генерации вашего круг общения в социальной сети Twitter
Найдите своих лучших друзей в Twitter
Создайте свой собственный круг общения в Twitter и опубликуйте его.
Как опубликовать круг взаимодействия в Twitter?
- На главном экране приложения укажите свой никнейм пользователя из сети Twitter, также можно указать имя другого пользователя;
- Нажмите на кнопку "Generate";
- Если пользователь существует, а так же есть доступ к сети интернет, программа начнет собирать информацию по указанному пользователю:
историю пользовательской активности, лайки, reply, ретвиты
Программа не требует авторизации в Twitter!
- Используются официальный Twitter API
- Внимание: этот инструмент не имеет прямого отношения к сервису Twitter.
Пожалуйста, не используйте программу, если вы не понимаете ее назначения.
Если наше приложение окажется для вас полезным, поставьте нам оценку 🌟🌟🌟🌟🌟

Комментариев нет:
Отправить комментарий