CS157a
Chris Pollett
Nov 13, 2019
SELECT name FROM MovieExec, (SELECT producerC# FROM Movies, StarsIn WHERE title = movieTitle AND year = movieYear AND starName = 'Harrison Ford' ) Prod WHERE cert# = Prod.producerC#;
SELECT * FROM Movies CROSS JOIN StarsIn;
SELECT * FROM Movies, StarsIn;
(Movies CROSS JOIN StarsIn) MSI
SELECT title, year, length, genre, studioName, producerC#, starName FROM (Movies JOIN StarsIn ON title = movieTitle AND year = movieYear);
MovieStar(name, address, gender, birthdate) MovieExec(name, address, cert#, netWorth)we could output their natural join as:
SELECT * FROM (MovieStar NATURAL JOIN MovieExec);
R NATURAL FULL OUTER JOIN S
R NATURAL LEFT OUTER JOIN S or R NATURAL RIGHT OUTER JOIN S
Movies LEFT OUTER JOIN StarsIn ON title = movieTitle AND year = movieYear;
SELECT FirstName FROM EMPLOYEE;
SELECT DISTINCT FirstName FROM EMPLOYEE;
(SELECT title, year FROM Movies) UNION ALL (SELECT movieTitle AS title, movieYear AS year FROM StarsIn);
SELECT AVG(netWorth) FROM MovieExec;
SELECT COUNT(DISTINCT FirstName) FROM EMPLOYEE;
SELECT COUNT(FirstName) FROM EMPLOYEE; or SELECT COUNT(*) FROM EMPLOYEE;
SELECT studioName, SUM(length) FROM Movies GROUP BY studioName;
SELECT studioName FROM Movies GROUP BY studioNamewould sort tuples from movies into distinct groups by movie name and then output the sudioName for each group.
SELECT DISTINCT studioName FROM Movies;
SELECT name, SUM(length) FROM MovieExec, Movies WHERE producerC# = cert# GROUP BY name;computes the length of movies for each producer.
SELECT name, SUM(length) FROM MovieExec, Movies WHERE producerC# = cert# GROUP BY name HAVING MIN(year) < 1930;