SQL EX - Ru Exercises
SQL EX - Ru Exercises
Find the model number, speed and hard drive capacity for all the PCs with prices below $500.
Result set: model, speed, hd.
FROM pc
FROM product
FROM laptop
SELECT *
FROM printer
FROM pc
FROM laptop
FROM product
UNION
FROM product
UNION
FROM product
FROM Product
FROM Product
FROM product
FROM printer
FROM printer);
SELECT AVG(speed)
FROM laptop
WHERE price>1000;
SELECT AVG(speed)
FROM pc
FROM ships
SELECT hd
FROM pc
GROUP BY hd
HAVING COUNT(hd)>=2;
FROM PC p1, PC p2
WHERE color='y' AND pri.price = (SELECT MIN(price) FROM printer WHERE color='y');
FROM product
GROUP BY product.maker;
FROM product
GROUP BY maker
FROM product
GROUP BY maker;
FROM pc
GROUP BY speed;
INTERSECT
AND (
OR
OR
(printer.price >= laptop.price AND printer.price >= pc.price
FROM pc
FROM pc
INTERSECT
SELECT maker
FROM product
UNION ALL
) AS avgprice;
Exercise: 27 (Serge I: 2003-02-03)
Find out the average hard disk drive capacity of PCs produced by makers who also manufacture printers.
Result set: maker, average HDD capacity.
FROM pc
GROUP BY maker;
SELECT COUNT(maker)
FROM product
GROUP BY maker
HAVING count(model)=1) AS a;
FROM Income_o i
UNION
FROM outcome_o o
UNION ALL
FROM classes
WHERE s.class=c.class
UNION
WHERE o.ship=c.class
GROUP BY country;
SELECT ship
FROM Outcomes
SELECT name
FROM Ships
WHERE Classes.displacement > 35000 AND Ships.launched >= 1922 AND Classes.type = 'bb';
FROM product
WHERE model
SELECT name
FROM ships
UNION
SELECT ship
FROM outcomes
SELECT c.class
FROM
FROM ships s
UNION
FROM Outcomes o
GROUP by c.class
HAVING count(*) = 1;
SELECT country
FROM Classes
INTERSECT
SELECT country
FROM Classes
FROM outcomes o
FROM outcomes o2
WHERE o2.ship=o.ship
FROM product
WHERE maker IN
FROM product
GROUP BY maker
-------------------------------------------------------------------------
FROM outcomes
SELECT name
FROM battles
SELECT name
FROM ships
UNION
SELECT ship
FROM outcomes
SELECT name
FROM ships
UNION
SELECT ship
FROM outcomes
FROM outcomes
WHERE battle='Guadalcanal'
UNION
FROM outcomes
LEFT JOIN classes ON ship = classes.class
--------------------------------------------------------------
SELECT class
UNION
SELECT ship
SELECT name
FROM ships
WHERE classes.bore = 16
UNION
SELECT ship
SELECT name
UNION
ON Classes.class=Ships.class
UNION
SELECT ship,numGuns,displacement
ON ship=class) AS y
WHERE x.displacement=y.displacement);
SELECT s.name
FROM ships s
WHERE CASE WHEN c.numguns IS NULL THEN 9 ELSE c.numguns END > 8
AND CASE WHEN c.bore IS NULL THEN 8 ELSE c.bore END <19
AND CASE WHEN c.displacement IS NULL THEN 8 ELSE c.displacement END <= 65000
AND CASE WHEN c.type IS NULL THEN 'bb' ELSE c.type END = 'bb'
AND CASE WHEN c.country IS NULL THEN 'Japan' ELSE c.country END = 'Japan';
FROM Classes
UNION
FROM ships s
FROM classes
GROUP BY classes.class;
Exercise: 56 (Serge I: 2003-02-16)
For each class, find out the number of ships of this class that were sunk in battles.
Result set: class, number of ships sunk.
UNION ALL
SELECT c.class
UNION
FROM outcomes
FROM outcomes
FROM classes)) c
GROUP BY class
HAVING COUNT(*)>=3)
GROUP BY class;
CAST( 100.0 *
(SELECT COUNT(1) FROM product p WHERE p.maker = p1.maker AND p.type= p2.type)
AS NUMERIC(12, 2))
FROM income_o
GROUP BY point) AS t1
LEFT JOIN
FROM outcome_o
GROUP BY point) AS t2
ON point=o1;
WHERE date<'2001-04-15'
GROUP BY point) AS t1
LEFT JOIN
WHERE date<'2001-04-15'
GROUP BY point) AS t2
ON point=o1;
income_o
GROUP BY point
UNION
GROUP BY point
) AS t;
SELECT
(SELECT SUM(in2.inc)
(SELECT SUM(out2.out)
FROM Pass_in_trip
HAVING COUNT(*)>1);
Exercise: 64 (Serge I: 2010-06-04)
Using the Income and Outcome tables, determine for each buy-back center the days when it received
funds but made no payments, and vice versa.
Result set: point, date, type of operation (inc/out), sum of money per day.
FROM income i
WHERE NOT EXISTS (SELECT 1 FROM outcome o WHERE i.point = o.point AND i.date = o.date)
UNION
WHERE NOT EXISTS (SELECT 1 FROM income i WHERE i.point = o.point AND i.date = o.date)
CASE
ELSE 3
END) AS num,
CASE
THEN ''
ELSE maker
WITH t1 AS (
FROM t1 tt;
SELECT COUNT(*)
FROM trip
ORDER BY c DESC) AS t;
SELECT COUNT(*)
FROM trip
WHERE town_from>=town_to
WHERE town_to>town_from
) AS t
GROUP BY c1,c2
ORDER BY cc DESC
) AS tt;
UNION ALL
(SELECT SUM(inc) FROM base_set WHERE date <= bs.date AND point = bs.point) rem
FROM outcomes o
SELECT p.maker
FROM product p
GROUP BY p.maker
JOIN
) AS t
GROUP BY c1
HAVING COUNT(*)=1) AS tt
ON ID_psg=c1
UNION
WHERE
(SELECT COUNT(1)
FROM t1
SELECT t.name
FROM
(SELECT s.name,
)t
SELECT Q_NAME
FROM utQ
FROM utB
GROUP BY B_Q_ID
FROM utB
FROM utB
GROUP BY B_V_ID
SELECT v2.v_name
v2.v_id = b2.b_v_id
GROUP BY v2.v_name
INTERSECT
SELECT v.v_name
v.v_color = 'r'
GROUP BY v.v_name
SELECT name
FROM passenger
SELECT
- (SELECT SUM(b_vol)
FROM utb b
- (SELECT SUM(b_vol)
FROM utb b
- (SELECT SUM(b_vol)
FROM utb b