INFO20003 A2 S2 2019 1 INFO20003 Semester 2, 2019 Assignment 2: SQL Due: 6:00pm Friday 20th of September Submission: Via LMS https://lms.unimelb.edu.au Wellbeing Application You are the SQL programmer for a mental wellbeing app, which allow...
INFO20003 A2 S2 2019 1
INFO20003 Semester 2, 2019
Assignment 2: SQL
Due: 6:00pm Friday 20th of September
Submission: Via LMS https://lms.unimelb.edu.au
You are the SQL programmer for a mental wellbeing app, which allows users to do two types of
things. The first is to participate in a Twitter-style social network. The second is to do online units
called Steps, which are interactive therapy modules designed to exercise and develop a range
of psychological skills.
How the app works
When users register into the system, a record is created in the ‘user’ table. Upon registering, a
user can follow other users to see their posts and activity. If user x (following) starts following
user y (followed), an appropriate entry is created in the ‘user_follow’ table (x following y does not
necessarily mean that y follows x). The weight attribute of this table holds an integer that reflects
the extent to which x follows y; for example, this number would increase the more x likes or
comments on posts created by y. To help connect users, each user can also select, from a list
stored in the ‘interest’ table, interests that they have (e.g. movies, music, books). For each
interest that a user selects, a record is created in the associative table ‘user_interest’.
On the therapy side of this app, users can do online modules called Steps. Different Steps take
different amounts of time to complete and users can do a Step in one sitting or return to a Step
and complete it later on. Sometimes they might not finish a Step and will instead move on to
something else. Also, they can do any given Step as many times as they would like and each
time, they can rate how it made them feel (1 being the lowest and 5 being the highest).
As soon as user x makes a start on doing Step z, an entry is created in the ‘step_taken’ table to
record the fact that x started doing z. The timestamp of this start is also automatically recorded
in the ‘when_started’ column. If the user successfully completes the Step, the datetime of
completion is recorded in the ‘when_finished’ column.
INFO20003 A2 S2 2019 2
Steps are also categorised under themes, which are used to indicate what types of things a Step
might help with. For example, a Step that helps with mindfulness would be categorised under
the ‘Mindfulness’ theme. A given step can be categorised under more than one themes.
A dataset is provided against which you can test your solutions to the assignment. To set up the
dataset, download the file wellbeingapp.sql from the Assessments folder on LMS and run it in
MySQL Workbench. This script creates the database tables and populates them with data.
The script is designed to run against your account on the Engineering IT server
(info20003db.eng.unimelb.edu.au). If you want to install the schema on your own MySQL Server
installation, uncomment the BYOD section at the beginning of the script.
INFO20003 A2 S2 2019 3
The SQL Tasks
In this section are listed 10 questions for you to answer. Write one (single) SQL statement per
question. Subqueries and nesting are allowed within a single SQL statement – however, you will
be penalized for writing overly complicated SQL statements. DO NOT USE VIEWS to answer
1. Find all the ongoing/unfinished steps. Display the title of these steps and full names of
the users who are taking these steps. (1 mark)
2. List the themes and the number of the steps associated with these themes. Display the
theme name and number of associated steps sorted in descending order. (1 mark)
3. Which step is the least popular based on the average rating given by users? Display the
title and ID of the step and its average rating (formatted to 2 decimal places). Only include
those steps which are rated by at least one user. (1 mark)
4. Find the steps that are taken the greatest number of times. Display the ID, title and count
of the times the step has been taken. In case of ties, display all the steps with the same
number of times taken. (2 marks)
5. Who is the most followed user between age of 15 and 18? Display the age (as an integer),
first name, and last name of such user along with the number of followers. (2 marks)
Hint: The function TIMESTAMPDIFF can be used to subtract two timestamps. The
function CURDATE returns current date.
6. Find all steps that are never taken or are taken exactly once? Display the id and title of
these steps along with the indication how many times the step has been taken (0 or 1).
7. Find users who started taking step ‘Doing and being’ after they had started the step ‘Panic’
but have never completed ‘Panic’. Display the user ID, first name and last name.
8. What finished steps were completed both by a user with first name "Alice" and a user
with first name "Bob"? Display the ID and title of such steps along with the number of
times each user has completed these steps. (3 marks)
9. Find the top two users with the highest number of interests. For those two users, find out
the common steps taken by both of them. Display the titles of the common steps they
have taken and the number of times those steps are taken by each user. (3 marks)
10. For each user taking a step, calculate how many other users have taken the same step.
We are only interested in the cases where the step is performed by at least 5 other users.
Display the user ID, number of other users (at least 5 other users) who are taking the
same step and the title of the taken step. (3 marks)
INFO20003 A2 S2 2019 4
Submit a single PDF showing your answers to all questions to the Assessment page on LMS by
6pm on the due date of Friday 20th of September. Name your file 987654.pdf, where 987654
corresponds to YOUR student id. Other formatting requirements are listed below.
For each question, present an answer in the following format:
• Show the question number and question in black text.
• Show your answer (the SQL statement) in blue text (not a screenshot).
• Show a screenshot from Workbench containing the output of the query.
o If the query returns more than 10 rows, take a screenshot of only the first 10 rows.
• Show how many rows were actually returned in red text.
• Show each query on a separate page.
QXX. List the names of the themes.
7 rows returned
INFO20003 A2 S2 2019 5
Requesting a Submission Deadline Extension
If you need an extension due to a valid (medical) reason, you will need to provide evidence to
support your request by 9pm, Thursday 19th of September. Medical certificates need to be at
least two days in length.
To request an extension:
1. Email Farah Khan (firstname.lastname@example.org) from your university email address,
supplying your student ID, the extension request and supporting evidence.
2. If your submission deadline extension is granted you will receive an email reply granting
the new submission date. Do not lose this email! Replies may take up to 12 hours, so
please be patient.
Reminder: INFO20003 Hurdle Requirements
To pass INFO20003 you must pass two hurdles:
• Hurdle 1: Obtain at least 50% (15/30) or higher for the three assignments (each worth 10%)
• Hurdle 2: Obtain a grade of 50% (35/70) or higher for the End of Semester Exam
Therefore, it is our recommendation to students that you attempt every assignment and every
question in the exam.