Created
April 16, 2011 14:57
-
-
Save mgechev/923167 to your computer and use it in GitHub Desktop.
16.04.2011 - Exercise_For_Test1
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SET SCHEMA SHIPS; | |
--Имената и годините на пускане на всички кораби, които имат същото име като | |
--своя клас. | |
SELECT NAME, LAUNCHED | |
FROM SHIPS | |
WHERE NAME = CLASS; | |
SET SCHEMA MOVIES; | |
--Всички филми, чието заглавие съдържа едновременно думите 'Star' и 'Trek' (не | |
--непременно в този ред). Резултатите да се подредят по година (първо най-новите | |
--филми), а филмите от една и съща година - по азбучен ред. | |
SELECT TITLE | |
FROM MOVIE | |
WHERE TITLE LIKE 'Star%Trek' OR TITLE LIKE 'Trek%Star' | |
ORDER BY YEAR DESC, TITLE ASC; | |
--Заглавията и годините на филмите, в които са играли звезди, родени между | |
--1.1.1970 и 1.7.1980. | |
SELECT STARSIN.MOVIETITLE, STARSIN.MOVIEYEAR | |
FROM STARSIN JOIN MOVIESTAR ON MOVIESTAR.NAME = STARSIN.STARNAME | |
WHERE MOVIESTAR.BIRTHDATE BETWEEN '1970-1-1' AND '1980-1-7'; | |
SET SCHEMA SHIPS; | |
--Имената на всички кораби, за които едновременно са изпълнени следните | |
--условия: (1) участвали са в поне една битка и (2) имената им (на корабите) | |
--започват с C или K. | |
SELECT SHIPS.NAME, OUTCOMES.RESULT | |
FROM SHIPS RIGHT OUTER JOIN OUTCOMES ON SHIPS.NAME = OUTCOMES.SHIP | |
WHERE SHIPS.NAME LIKE 'C%' OR SHIPS.NAME LIKE 'K%'; | |
--Всички държави, които имат потънали в битка кораби. | |
SELECT DISTINCT CLASSES.COUNTRY | |
FROM | |
CLASSES JOIN SHIPS ON CLASSES.CLASS = SHIPS.CLASS JOIN OUTCOMES ON SHIPS.NAME = OUTCOMES.SHIP | |
WHERE OUTCOMES.RESULT = 'sunk'; | |
--Всички държави, които нямат нито един потънал кораб. | |
SELECT DISTINCT COUNTRY | |
FROM CLASSES | |
WHERE COUNTRY NOT IN ((SELECT DISTINCT CLASSES.COUNTRY | |
FROM | |
CLASSES JOIN SHIPS ON CLASSES.CLASS = SHIPS.CLASS JOIN OUTCOMES ON SHIPS.NAME = OUTCOMES.SHIP | |
WHERE OUTCOMES.RESULT = 'sunk')); | |
--(От държавен изпит) Имената на класовете, за които няма кораб, пуснат на вода | |
--(launched) след 1921 г. Ако за класа няма пуснат никакъв кораб, той също трябва | |
--да излезе в резултата. | |
SELECT DISTINCT CLASSES.CLASS | |
FROM CLASSES LEFT OUTER JOIN SHIPS ON CLASSES.CLASS = SHIPS.CLASS | |
WHERE SHIPS.LAUNCHED > 1921 OR SHIPS.NAME IS NULL; | |
--Името, държавата и калибъра (bore) на всички класове кораби с 6, 8 или 10 | |
--оръдия. Калибърът да се изведе в сантиметри (1 инч е приблизително 2.54 см). | |
SELECT SHIPS.NAME AS NAME, CLASSES.COUNTRY AS COUNTRY, (CLASSES.BORE * 2.54) AS BORE | |
FROM CLASSES JOIN SHIPS ON SHIPS.CLASS = CLASSES.CLASS | |
WHERE NUMGUNS = 6 OR NUMGUNS = 8 OR NUMGUNS = 10; | |
--Държавите, които имат класове с различен калибър (напр. САЩ имат клас с 14 | |
--калибър и класове с 16 калибър, докато Великобритания има само класове с 15). | |
SELECT DISTINCT C1.COUNTRY | |
FROM CLASSES AS C1 JOIN CLASSES AS C2 ON C1.COUNTRY = C2.COUNTRY | |
WHERE C1.BORE <> C2.BORE; | |
--Страните, които произвеждат кораби с най-голям брой оръдия (numguns). | |
SELECT DISTINCT COUNTRY | |
FROM CLASSES | |
WHERE NUMGUNS >= ALL (SELECT CLASSES.NUMGUNS | |
FROM CLASSES); | |
SET SCHEMA PC; | |
--Компютрите, които са по-евтини от всеки лаптоп на същия производител | |
SELECT P1.CODE | |
FROM PC AS P1 JOIN PRODUCT AS P2 ON P2.MODEL = P1.MODEL | |
WHERE P1.PRICE <= ALL (SELECT LAPTOP.PRICE | |
FROM LAPTOP JOIN PRODUCT ON LAPTOP.MODEL = PRODUCT.MODEL | |
WHERE PRODUCT.MAKER = P2.MAKER); | |
--Компютрите, които са по-евтини от всеки лаптоп и принтер на същия производител. | |
SELECT P1.CODE | |
FROM PC AS P1 JOIN PRODUCT AS P2 ON P2.MODEL = P1.MODEL | |
WHERE P1.PRICE <= ALL (SELECT LAPTOP.PRICE | |
FROM LAPTOP JOIN PRODUCT ON LAPTOP.MODEL = PRODUCT.MODEL | |
WHERE PRODUCT.MAKER = P2.MAKER) | |
AND P1.PRICE <= ALL (SELECT PRINTER.PRICE | |
FROM PRINTER JOIN PRODUCT ON PRINTER.MODEL = PRODUCT.MODEL | |
WHERE PRODUCT.MAKER = P2.MAKER); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment