Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

SQL Problem 1 (30 min)

Assume we have loaded a flat file with patient diagnosis data into a table called Data. The
table structure is:
Create table Data (
Firstname varchar(50),
Lastname varchar(50),
Date_of_birth datetime,
Medical_record_number varchar(20),
Diagnosis_date datetime,
Diagnosis_code varchar(20))
The data in the flat file looks like this:
'jane','jones','2/2/2001','MRN-11111','3/3/2009','diabetes'
'jane','jones','2/2/2001','MRN-11111','1/3/2009','asthma'
'jane','jones','5/5/1975','MRN-88888','2/17/2009','flu'
'tom','smith','4/12/2002','MRN-22222','3/3/2009','diabetes'
'tom','smith','4/12/2002','MRN-33333','1/3/2009','asthma'
'tom','smith','4/12/2002','MRN-33333','2/7/2009','asthma'
'jack','thomas','8/10/1991','MRN-44444','3/7/2009','asthma'
You can assume that no two patients have the same firstname, lastname, and date of birth
combination.
The problem is this: Tom Smith has 2 different medical record numbers. Write a query that
would always show all the patients
who are like Tom Smith patients with more than one medical record number.
This problem has many solutions, but if you know SQL, you should be able to find one that
uses a single query with nosubqueries.

Select Firstname,Lastname,Date_of_Birth,Medical_record from


Data groupby
Firstname,Lastname,Date_of_Birth,Medical_record;

SQL Problem 2 (60 min)


Given the following tables and data:
create table months (monthIndex int);
create table invoice(invoiceId int, month int)
create table lineitems(lid int, invoiceID int, charged_amount decimal(6,2), contracted_rate
decimal(6,2))
Insert into months values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12);
Insert into invoice values
(1,1),
(2,1),
(3,2),
(4,2),
(5,4),
(6,5),
(7,5),
(8,8),
(9,8),
(10,3),
(11,3),
(12,6),
(13,7),
(14,10),
(15,11),
(16,11);

Insert into lineitems values


(1,1,1000.10,1000.10),
(2,1,1500.20,1200.00),
(3,1,1300.10,1300.10),
(4,2,2100.30,2100.30),
(5,2,1100.10,1000.10),
(6,2,1100.40,1100.40),
(7,3,6000.10,6000.40),
(8,3,1400.10,1400.40),
(9,4,4500.10,4500.10),
(10,5,3300.10,3000.18),
(11,5,2900.10,2900.10),
(12,6,8900.10,8900.10),
(13,6,2200.10,2200.10),
(14,8,3700.10,3700.50),
(15,9,7000.10,7000.60),
(16,10,2200.10,2200.10),

(17,10,2200.10,2200.10),
(18,11,2200.10,2200.10),
(19,12,2200.10,2200.10),
(20,13,2200.10,2200.10),
(21,13,2200.10,2200.10),
(22,14,1100.10,1000.10),
(23,14,1100.40,1100.40),
(24,14,6000.10,6000.40),
(25,15,1400.10,1400.40),
(26,16,4500.10,4500.10),
(27,16,3300.10,3000.18);
Develop a single SQL Query that computes the total invoices amount for each month ,
and the percentage of change from the previous month. If there are no invoices for the
month , the computed value should be null.
Here is the result that the query should generate:

B.
Develop a single query that computes the percentage of rate compliance. An invoice
line item is compliant if the charged amount is equal to the contracted rate. For each month
, find the percentage of lineitems that are not complaint .
Here is the result that the query should generate.

Data Modeling (20 min)


Describe a Star Schema for a data warehouse that enables analytics for the following
problem:
Students attend online courses from various geographies. Online courses are authored by
teachers. The DW should allow the analysis of the attendance , and the factors that affect
the popularity of courses .
You do not need to create SQL statements in this problem. The answer should describe in
words a data model for the problem , names of the main tables , description of what they
will contain, and relationships. Describe any assumptions you may need to make.

You might also like