COMP3311 Final Exam 20T3 |
The University of New South Wales COMP3311 Database Systems Final Exam 20T3 |
Database Systems |
Write a PLpgSQL function that reports the number of "short" and "long" songs by each group over their whole recording career. A "short" song is defined to be one whose length is strictly less that 3 minutes (180 seconds). A "long" song is defined to be one whose length is strictly greater than 6 minutes (360 seconds).
create type SongCounts as ( "group" text, nshort integer, nlong integer ); create or replace function q4() returns setof SongCounts ...
The attributes in SongCounts are as follows:
Note that the function has no parameters, so will always produce the same result, e.g.
music=# select * from q4() order by "group"; group | nshort | nlong ----------------------+--------+------- After the Sea | 4 | 14 After the Sky | 0 | 0 All of the Floyd | 3 | 5 All of the Sea | 2 | 15 Black Eyed Boy | 4 | 26 Black Eyed Nails | 6 | 30 Black Mountains | 3 | 7 Black Vanilla | 6 | 18 Blue Floyd | 10 | 18 Blue Mountains | 4 | 11 ... etc etc etc ...
Warning: you may have a different collation setting in your PostgreSQL server to the one that produced the expected results. This affects the ordering of certain characters, such as space. If you get a message that your test failed with "Different order", then your solution is most likely correct.
Instructions: