Sailors
Sailors
("S101","Albert",50,10),
("S102","Robert",49,9),
("S103","Gilbert",48,8),
("S104","Kurt",47,8),
("S105","Andrew",45,9),
("S106","Daniel",25,6),
("S107","gaga",20,5),
("S108","gugu",20,6),
("S109","gigi",19,4),
("S110","Luigi",23,2);
insert into boats values
("B101","Speeder","White"),
("B102","Titanic","Black"),
("B103","Indy","Blue"),
("B104","Firestorm","Green"),
("B105","StormRanger","Brown");
--3 Find thenames of sailors who have not reserved a boat whose name
contains the string “storm”.
--Order the names in ascending order.
select distinct sname from sailors as s ,reservers as r, boats as b
where r.sid = s.sid and r.bid = b.bid and b.bname not like "%storm%"
order by s.sname ;
--6 For each boat which was reserved by at least 5 sailors with age >=
40, find the boat id and
--the average age of such sailors.
SELECT reservers.bid, AVG(Sailors.age) as avg_age
FROM reservers
JOIN Sailors ON reservers.sid = Sailors.sid
WHERE Sailors.age >= 40
GROUP BY reservers.bid
HAVING COUNT(reservers.sid) >= 5;
delimiter //
create trigger delete_old
after insert on reservers
for each row BEGIN
if new.sdate < CURRENT_DATE() THEN
signal sqlstate "45000" set message_text = "Old reservation
deleted";
DELETE from rservers where sid = new.sid and sdate = new.sdate;
end if;
end //
delimiter ;
delimiter //
create trigger del_old2
after update on reservers
for each row BEGIN
if new.sdate < CURRENT_DATE() THEN
signal sqlstate "45000" set message_text = "Old reservation
deleted";
DELETE from rservers where sid = new.sid and bid = new.bid and
sdate = new.sdate;
end if;
end //
delimiter ;
AACCCCC0
1 = no of accidents in 2021
select count(distinct p.d_id) from participated as p , accident AS a
where p.report_no = a.report_no and a.acc_date like "2021%";