INFO20003 A2 S2 2019 1 INFO20003 Semester 2, 2019 Assignment 2: SQL Due: 6:00pm Friday 20th of September Submission: Via LMS 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

Wellbeing Application

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.

Data Model

Setup Script

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

( 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).

(2 marks)

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.

(2 marks)

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

Submission Instructions

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.


FROM theme;

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 ( 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.


因为专业,所以值得信赖。如有需要,请加QQ99515681 或邮箱