MariaDB [swim]> -- Suggested solution to HW #5 Joint DB Spring 2024 MariaDB [swim]> MariaDB [swim]> -- (1) List the names, phones and join times of all swimmers joining in the years of 1/2014 to 6/2016 ordered by join time in the following manner. MariaDB [swim]> SELECT DISTINCT s.LName, s.FName, s.Phone, s.joinTime -> FROM swimmer AS s -> WHERE s.joinTime BETWEEN '2014-01-01' AND '2016-06-30' -> ORDER BY s.joinTime ASC; +---------+--------+--------------+------------+ | LName | FName | Phone | joinTime | +---------+--------+--------------+------------+ | Khan | Bobby | 832-116-2992 | 2014-02-12 | | Johnson | Philip | 713-222-1010 | 2015-05-15 | | Khan | Billy | 832-116-2992 | 2015-12-12 | | Khan | Nina | 832-116-2992 | 2016-05-12 | +---------+--------+--------------+------------+ 4 rows in set (0.019 sec) MariaDB [swim]> -- or MariaDB [swim]> SELECT DISTINCT s.LName, s.FName, s.Phone, s.joinTime -> FROM swimmer AS s -> WHERE s.joinTime >= '2014-01-01' -> AND s.joinTime <= '2016-06-30' -> ORDER BY s.joinTime ASC; +---------+--------+--------------+------------+ | LName | FName | Phone | joinTime | +---------+--------+--------------+------------+ | Khan | Bobby | 832-116-2992 | 2014-02-12 | | Johnson | Philip | 713-222-1010 | 2015-05-15 | | Khan | Billy | 832-116-2992 | 2015-12-12 | | Khan | Nina | 832-116-2992 | 2016-05-12 | +---------+--------+--------------+------------+ 4 rows in set (0.001 sec) MariaDB [swim]> MariaDB [swim]> -- (2) List the names of the swimmers who have the same last name as their primary care takers in the following manner. MariaDB [swim]> SELECT DISTINCT CONCAT(s.FName, ' ', s.LName) AS swimmer, -> CONCAT(c.FName, ' ', c.LName) AS `primary caretaker` -> FROM Swimmer AS s INNER JOIN Caretaker c ON (s.Main_CT_Id = c.CT_Id) -> WHERE c.LName = s.LName; +----------------+-------------------+ | swimmer | primary caretaker | +----------------+-------------------+ | Bobby Khan | Azalea Khan | | Billy Khan | Azalea Khan | | Nina Khan | Joseph Khan | | Clara Johnson | Katie Johnson | | Philip Johnson | Elizabeth Johnson | +----------------+-------------------+ 5 rows in set (0.009 sec) MariaDB [swim]> MariaDB [swim]> -- (3) List all swimmers (their names, levels) event titles, and meet titles in which the swimmers have participated in a butterfly event of the meet. MariaDB [swim]> SELECT DISTINCT DISTINCT CONCAT(s.FName, ' ', s.LName) AS swimmer, -> l.level, m.title AS meet, e.title AS event -> FROM level AS l INNER JOIN Swimmer AS s ON (l.LevelId = s.CurrentLevelId) -> INNER JOIN participation AS p ON (s.SwimmerId = p.SwimmerId) -> INNER JOIN Event AS e ON (p.EventId = e.EventId) -> INNER JOIN Meet AS m ON (e.MeetId = m.MeetId) -> WHERE e.Title LIKE '%Butterfly%'; +----------------+--------+-------------+----------------+ | swimmer | level | meet | event | +----------------+--------+-------------+----------------+ | Billy Khan | Blue | UHCL Open | 50M Butterfly | | Nina Khan | Blue | UHCL Open | 50M Butterfly | | Philip Johnson | Blue | UHCL Open | 50M Butterfly | | Bobby Khan | Yellow | UHCL Open | 100M Butterfly | | Clara Johnson | Yellow | UHCL Open | 100M Butterfly | | Clara Johnson | Yellow | Shell Trial | 50M Butterfly | | Billy Khan | Blue | Shell Trial | 50M Butterfly | | Nina Khan | Blue | Shell Trial | 50M Butterfly | | Philip Johnson | Blue | Shell Trial | 50M Butterfly | | Bobby Khan | Yellow | Shell Trial | 100M Butterfly | | Clara Johnson | Yellow | Shell Trial | 100M Butterfly | +----------------+--------+-------------+----------------+ 11 rows in set (0.041 sec) MariaDB [swim]> MariaDB [swim]> -- (4) List the names of the swimmers who have participated in a 100M Freestyle event and a 50M Butterfly event in the following manner. MariaDB [swim]> SELECT DISTINCT s.swimmerId, -> CONCAT(s.FName, ' ', s.LName) AS swimmer, -> e1.eventId AS `100M Freestyle eventId`, -> e2.eventId AS `50M Butterfly eventId` -> FROM Swimmer AS s INNER JOIN participation AS p1 ON (s.SwimmerId = p1.SwimmerId) -> INNER JOIN event AS e1 ON (p1.eventId = e1.eventId AND e1.title = '100M Freestyle') -> INNER JOIN participation AS p2 ON (s.SwimmerId = p2.SwimmerId) -> INNER JOIN event AS e2 ON (p2.eventId = e2.eventId AND e2.title = '50M Butterfly'); +-----------+----------------+------------------------+-----------------------+ | swimmerId | swimmer | 100M Freestyle eventId | 50M Butterfly eventId | +-----------+----------------+------------------------+-----------------------+ | 2 | Billy Khan | 2 | 1 | | 2 | Billy Khan | 2 | 5 | | 2 | Billy Khan | 6 | 1 | | 2 | Billy Khan | 6 | 5 | | 3 | Nina Khan | 2 | 1 | | 3 | Nina Khan | 2 | 5 | | 3 | Nina Khan | 6 | 1 | | 3 | Nina Khan | 6 | 5 | | 5 | Philip Johnson | 2 | 1 | | 5 | Philip Johnson | 2 | 5 | | 5 | Philip Johnson | 6 | 1 | | 5 | Philip Johnson | 6 | 5 | +-----------+----------------+------------------------+-----------------------+ 12 rows in set (0.005 sec) MariaDB [swim]> MariaDB [swim]> -- (5) Redo (4), but show the result in the following manner. MariaDB [swim]> WITH t1 AS ( -> SELECT DISTINCT s.swimmerId, -> CONCAT(s.FName, ' ', s.LName) AS swimmer, -> GROUP_CONCAT(e.eventId SEPARATOR ', ') AS `100M Freestyle eventIds` -> FROM Swimmer AS s INNER JOIN participation AS p ON (s.SwimmerId = p.SwimmerId) -> INNER JOIN event AS e ON (p.eventId = e.eventId AND e.title = '100M Freestyle') -> GROUP BY 1, 2 -> ), -> t2 AS ( -> SELECT DISTINCT s.swimmerId, -> CONCAT(s.FName, ' ', s.LName) AS swimmer, -> GROUP_CONCAT(e.eventId SEPARATOR ', ') AS `50M Butterfly eventIds` -> FROM Swimmer AS s INNER JOIN participation AS p ON (s.SwimmerId = p.SwimmerId) -> INNER JOIN event AS e ON (p.eventId = e.eventId AND e.title = '50M Butterfly') -> GROUP BY 1, 2 -> ) -> SELECT t1.swimmerId, t1.Swimmer, t1.`100M Freestyle eventIds`, t2.`50M Butterfly eventIds` -> FROM t1 NATURAL JOIN t2; +-----------+----------------+-------------------------+------------------------+ | swimmerId | Swimmer | 100M Freestyle eventIds | 50M Butterfly eventIds | +-----------+----------------+-------------------------+------------------------+ | 2 | Billy Khan | 2, 6 | 1, 5 | | 3 | Nina Khan | 2, 6 | 1, 5 | | 5 | Philip Johnson | 2, 6 | 1, 5 | +-----------+----------------+-------------------------+------------------------+ 3 rows in set (0.036 sec) MariaDB [swim]> MariaDB [swim]> -- (6) List the numbers of events on distances. Assume that the event title uses the format of "M