0% found this document useful (0 votes)
95 views56 pages

DBMS Da Lab 2

The document contains SQL statements to create tables for a hospital database including tables for doctors, departments, staff, patients, appointments, prescriptions, lab tests, and bills. It also includes SQL statements to insert sample data into the tables.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
95 views56 pages

DBMS Da Lab 2

The document contains SQL statements to create tables for a hospital database including tables for doctors, departments, staff, patients, appointments, prescriptions, lab tests, and bills. It also includes SQL statements to insert sample data into the tables.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 56

19BCI0129 UPANSHU DAS

CSE2004 –Database Management

Syst ems

Registration Number : 19BCI0129

N a me :UPANSHU DAS

Slot :L45 + L46 (LAB)

R D B M S used : Oracle(Online)

Cycle Sheet No. : 2


19BCI012 UPANSHU
9 DAS

Creating
Tables

Create table Doctor(


doc_id varchar(20) primary
key, doc_name varchar(30)
not null, d_gender char(1),

constraint ck_d_gender check(d_gender = 'M' or d_gender = 'F' or


d_gender = 'T'),
d_dob date not null,
specialist varchar(25),
qualification
varchar(15),
d_Contact number(20),
d_Address varchar(50) not
null, d_dept_no varchar(20)
);

create table
Department( dept_no
varchar(20) primary key,
dept_name varchar(30) not
null, room_no varchar(10),
floor
number(5),
hod
varchar(20),
constraint fk_hod foreign key(hod) references
Doctor(doc_id), estd_date date

);
19BCI012 UPANSHU
9 DAS

create table Staff(


staff_id varchar(15) primary
key, staff_name varchar(25)
not null, category
varchar(20), designation
varchar(15) not null, s_dob
date not null,
s _ c o n t a c t
n u m b e r ( 1 5 ) ,
s _ a d d r e s s
varchar(50),
s _ d e p t _ n o
varchar(10),
constraint fk_s_dept_no foreign key(s_dept_no)
references Department(dept_no)
);
create table Patient(
pat_id varchar(20) primary
key, pat_name varchar(30)
not null, p_dob date not null,
p_gender varchar(10) not null,
constraint ck_p_gender check(p_gender = 'M'or p_gender = 'F' or
p_gender
='T'),
p_contact number(20),
p_address varchar(50) not
null
);
create table
In_Patient( ip_id
19BCI0129 UPANSHU
DAS

start_time
date,
end_time date,
constraint fk_ip_id foreign key (ip_id) references Patient(pat_id)
);
create table
Appointment( app_id
varchar(20) primary key,
a_pat_id varchar(20),
constraint fk_a_pat_id foreign key(a_pat_id) references
Patient(pat_id), a_doc_id varchar(20),
constraint fk_a_doc_id foreign key(a_doc_id) references
Doctor(doc_id), nurse_id varchar(20),

constraint fk_nurse_id foreign key(nurse_id) references


Staff(staff_id), consult_room_no number(20),
a_date date not null,
a_time varchar(10) not null
);
create table Prescription(
pres_id varchar(15) primary
key, p_app_id varchar(20),
constraint fk_p_app_id foreign key(p_app_id)
references Appointment(app_id),
pres_date date not
null, pres_time
varchar(10),
diagnosis_details
varchar(20)
);
19BCI0129 UPANSHU
DAS

ip_pres_id varchar(20) not null,


primary
key(in_pat_id,ip_pres_id),

constraint fk_pres_id foreign key(ip_pres_id) references


Prescription(pres_id), constraint fk_in_pat_id foreign key(in_pat_id)
references Patient(pat_id)
);
create table
Prescribed_Medicines( m_pres
_id varchar(25) ,
constraint fk_m_pres_id foreign key (m_pres_id)
references Prescription(pres_id),
medicine_name varchar(40) not null,
primary
key(m_pres_id,medicine_name),
dosage varchar(20),
brand varchar(10)
);
create table
Hospital_Bill( inv_no
number(20), inv_date
date not null,
primary
key(inv_no,inv_date),
i_pat_id varchar(20),
constraint fk_i_pat_id foreign key(i_pat_id) references
Patient(pat_id), bill_amount number(25),
payment_type varchar(25) not
null, discount number(20)
19BCI012 UPANSHU
9 DAS

L_pat_id varchar(20),
constraint fk_L_pat_id foreign key(L_pat_id) references
Patient(pat_id), lab_date date,
lab_time varchar(10)
);

create table test_types(


tt_id varchar(20) primary
key, description
varchar(30), low_value
number(25),
high_value
number(25),
test_method
varchar(25), technician
varchar(20),

constraint fk_technician foreign key(technician) references


Staff(staff_id)
);

create table
Test_Results( r_test_id
varchar(20) ,

constraint fk_r_test_id foreign key (r_test_id) references


Lab_Tests(test_id), r_test_type_id varchar(20),
constraint fk_r_test_type_id foreign key(r_test_type_id)
references test_types(tt_id),
primary
key(r_test_id,r_test_type_id),
results varchar(20) not null
19BCI012 UPANSHU
9 DAS

Inserting Values

insert into Doctor values('D108','PRADEEP KUMAR','M','20-


SEPTEMBER- 1985','CARDIOLOGIST','MBBS',
9926519823,'1,BAREILLY','D101');
insert into Doctor values('D105','MAHENDRA GANGWAR','M','12-
FEBRUARY- 1980','NEUROLOGIST','BAMS',
9254376189,'15,LUCKNOW','D103');
insert into Doctor values('D101','MAHIPAL JOSHI','F','21-
AUGUST- 1989','NEPHROLOGIST','MD',
976124512,'51,KANPUR','D101');
insert into Doctor values('D107','AMAN SINGH','M','01-
JANUARY- 1992','ONCOLOGIST','MD',
8449268172,'95,AGRA','D190');
insert into Doctor values('D104','PAWAN GANGWAR','M','21-
DECEMBER- 1991','GENERALMEDICINE','MD',
8912678219,'102,PUNE','D101');
insert into Doctor values('D102','TANU GANGWAR','F','25-
JUNE- 1990','CARDIOLOGIST','MBBS',
9363981256,'530,DELHI','D100');
insert into Doctor values('D106','Raghavan','M','03-
FEBRUARY- 1994','NEPHROLOGIST','MDS',
9897268266,'17,MATHURA','D101');
insert
insert into
into Department values('D101','CARDIOLOGY','A-111',
Doctor values('D103','RIYA PATEL','F','25-
7,'D108','20-
APRIL- MARCH-2012');
1984','CARDIOLOGIST','MD',
7904226737,'121,GWALIOR','D005');
insert into Department values('D103','NEUROLOGY','A-120',
5,'D101','10- JANUARY-2011');
insert into Department values('D190','ONCOLOGY','A-005',
9,'D105','19- DECEMBER-2019');
insert into Department values('D100','CARDIOLOGY','C-050',
7,'D106','21-APRIL- 2019');
19BCI012 UPANSHU
9 DAS

insert into Department values('D005','GM','D-110',7,'D104','31-


DECEMBER- 2011');

insert into Staff values('S0001','KIRTI','nurse','staff nurse','18-


AUGUST- 1998',9421862561,'BAREILLY','D101');
insert into Staff values('S0002','SWATI GANGWAR','nurse','staff
nurse','05- SEPTEMBER-1999',9721765571,'LUCKNOW','D103');
insert into Staff values('S0003','SHIVANI MAURYA','nurse','staff
nurse','10- JUNE-1995',9421862561,'AGRA','D005');
insert into Staff values('S0004','VIRAT SINGH','lab
technician','technician','15- APRIL-1997',
978945121,'MATHURA','D190');
insert into Staff values('S0005','ROHIT KASHYAP','lab
technician','technician','18-DECEMBER-1998',
978951124,'PILIBHIT','D190');
insert into Staff values('S0006','DEEPANSHU
GANGWAR','cashier','staff cashier','11-DECEMBER-1994',
9421862561,'MUMBAI','D101');
insert into Staff values('S0008','MANOJ KUMAR','ward boy','ward
boy','29- AUGUST-1992',9787862561,'DELHI','D103');
insert into Staff values('S0009','YASH JAISWAL','security','staff
security','06- DECEMBER-1996',9421862561,'GURGAON','D005');
insert into Patient values('P101','SAKSHAM
PATEL','06-JULY- 2000','M',
9218357319,'52,BAREILLY');
insert into Patient values('P220','TANUJ','09-
OCTOBER- 1978','F',
7841454511,'132,MUMBAI');
insert into Patient values('P103','Steve ','20-
DECEMBER- 1975','M',9751254454,'08,DELHI');
insert into Patient values('P104','Mani','15-
JUNE- 1995','M',944587122,'62,JHANSI');
19BCI012 UPANSHU
9 DAS

insert into Patient values('P105','FARIA NOORI','19-


DECEMBER- 2014','F',9878987890,'12,GWALIOR');
insert into Patient values('P106','Gayle','25-
MARCH- 1990','M',
944548412,'102,MATHURA');
insert into Patient values('P107','MANSI JAISWAL','07-
JUNE- 1994','F',9785458412,'190,BAREILLY');
insert into Patient values('P108','Karthik','21-
AUGUST- 1979','M',944548412,'06,KANPUR');

insert into In_Patient values('P101', '11-MARCH-2017','B101','11-


MARCH- 2017','18-MARCH-2017');
insert into In_Patient values('P220', '10-JANUARY-2020' ,'B012','10-
JANUARY- 2020','30-JANUARY-2020');
insert into In_Patient values('P104', '28-
FEBRUARY-2020' ,'B101','28- FEBRUARY-2020','15-
MARCH-2020');
insert into In_Patient values('P105', '30-MARCH-2017','B015','30-
MARCH- 2017','09-APRIL-2017');
insert into In_Patient values('P106', '30-
DECEMBER-2019','B001','30- DECEMBER-2019','15-
JANUARY-2020');
insert into In_Patient values('P107','30-MARCH-2020','B019','30-
MARCH- 2020','17-APRIL-2020');
insert into In_Patient values('P103','29-MAY-2020','B101','29-
MAY-2020','12- JUNE-2020');
insert into In_Patient values('P108','30-
NOVEMBER-2019','B14','30- NOVEMBER-2019','30-
DEC-2019');
19BCI012 UPANSHU
9 DAS

insert into Appointment values('A101','P101','D101','S0001',103,'12-


MARCH- 2017','13:00');
insert into Appointment values('A102','P220','D102','S0002',111,'11-
JANUARY- 2020','12:00');
insert into Appointment values('A103','P103','D103','S0003',100,'01-
JANUARY- 2020','17:00');
insert into Appointment values('A104','P104','D104','S0004',
005,'18- FEBRUARY-2020','11:00');
insert into Appointment values('A105','P105','D105','S0005',120,'25-
AUGUST- 2019','08:00');
insert into Appointment values('A106','P106','D106','S0006',111,'01-
MAY- 2020','09:30');
insert into Appointment values('A107','P107','D107','S0008',111,'01-
MAY- 2020','10:15');
insert into Appointment values('A108','P108','D108','S0009',105,'01-
MAY- 2020','11:20');

insert into Prescription values('PR00001','A101', '12-


MARCH-2017'
,'13:30','COUGH');
insert into Prescription values('PR00002','A102', '11-
JANUARY-2020'
,'13:00','NEURAL ATTACK');
insert into Prescription values('PR00003','A103','02-
JANUARY- 2020','14:00','BILATERAL PNEUMONIA');
insert into Prescription values('PR00004','A104','18-
FEBRUARY- 2020','16:00','COUGH');
insert into Prescription values('PR00005','A105','25-
AUGUST- 2019','08:30','CARDIAC ARREST');
19BCI012 UPANSHU
9 DAS

insert into Prescription values('PR00006','A106','01-


MAY- 2020','10:15','ACCIDENT');
insert into Prescription values('PR00007','A107','01-
MAY- 2020','11:25','COUGH');
insert into Prescription values('PR00008','A108','01-
MAY- 2020','12:30','CARDIAC ARREST');

insert into In_Patient_Prescription values('P101','PR00001');


insert into In_Patient_Prescription
values('P220','PR00002'); insert into
In_Patient_Prescription values('P103','PR00003');
insert into In_Patient_Prescription
values('P104','PR00004'); insert into
In_Patient_Prescription values('P105','PR00005');
insert into In_Patient_Prescription
values('P106','PR00006'); insert into
In_Patient_Prescription values('P107','PR00007');
insert into In_Patient_Prescription
values('P108','PR00008');

insert into Prescribed_Medicines


values('PR00001','AMOXICILLIN','TWICE A DAY','Ranbaxy');
insert into Prescribed_Medicines
values('PR00002','AMANTADINE','ONCE A DAY','DEF');
insert into Prescribed_Medicines
values('PR00003','MACROLIDE','ONCE A DAY','Ranbaxy');
insert into Prescribed_Medicines
values('PR00004','AMOXICILLIN','THRICE A DAY','XYZ');
insert into Prescribed_Medicines
values('PR00005','LIDOCAINE','TWICE A DAY','JKL');
insert into Prescribed_Medicines
19BCI012 UPANSHU
9 DAS

insert into Prescribed_Medicines


values('PR00007','AMOXICILLIN','THRICE A DAY','PQR');
insert into Prescribed_Medicines
values('PR00008','LIDOCAINE','TWICE A DAY','Ranbaxy');

insert into Hospital_Bill values(1020,'18-


MARCH- 2017','P101',10000,'CASH',12);
insert into Hospital_Bill values(1021,'30-JANUARY-2020','P220',
200000,'CREDIT CARD',15);
insert into Hospital_Bill values(1022,'30-MAY-2020','P103',
11000,'DEBIT CARD',20);
insert into Hospital_Bill values(1023,'28-FEBRUARY-2020','P104',
15000,'DEBIT CARD',13);
insert into Hospital_Bill values(1024,'30-JANUARY-2020','P105',
20000,'CREDIT CARD',05);
insert into Hospital_Bill values(1025,'09-APRIL-2017','P106',
7000,'CASH',22); insert into Hospital_Bill values(1026,'17-
APRIL-2020','P107',3500,'CASH',18);
insert into Hospital_Bill values(1027,'12-JUNE-2020','P108',
42000,'DEBIT CARD',10);
insert into Hospital_Bill values(1028,'05-JUNE-2020','P103',
2000,'DEBIT CARD',21);
insert into Hospital_Bill values(1029,'09-JUNE-2020','P103',
15000,'DEBIT CARD',20);
19BCI0129 UPANSHU
DAS

insert into Lab_Tests values('T0001','P101','13-


MARCH-2017','11:00'); insert into Lab_Tests
values('T0002','P220','12-JANUARY-2020','09:00'); insert into
Lab_Tests values('T0003','P103','03-JANUARY-2020','10:00');
insert into Lab_Tests values('T0004','P104','19-
FEBRUARY-2020','09:30'); insert into Lab_Tests
values('T0005','P105','26-AUGUST-2019','16:00'); insert into
Lab_Tests values('T0006','P106','02-MAY-2020','17:00'); insert into
Lab_Tests values('T0007','P107','03-MAY-2020','13:00'); insert into
Lab_Tests values('T0008','P108','03-MAY-2020','14:00');
insert into test_types values('TT0001','URINE TEST',
26,74,'LAB','S0001'); insert into test_types values('TT0002','CT',
15,20,'LAB','S0002');
insert into test_types values('TT0003','Blood Sugar Level',
18,28,'LAB','S0003'); insert into test_types values('TT0004','XRAY
TEST',38,52,'LAB','S0001');
insert into test_types values('TT0005','CT TEST',
12.5,14.2,'LAB','S0005'); insert into test_types
values('TT0006','URINE TEST',12,22,'LAB','S0001'); insert into
test_types values('TT0007','XRAY',19,29,'LAB','S0009');
insert into test_types values('TT0008','Blood Glucose Level',
2,10,'LAB','S0008');
19BCI012 UPANSHU
9 DAS

insert into Test_Results


values('T0001','TT0001','POSITIVE'); insert into
Test_Results values('T0002','TT0002','NEGATIVE');
insert into Test_Results
values('T0003','TT0003','NEGATIVE'); insert into
Test_Results values('T0004','TT0004','POSITIVE');
insert into Test_Results
values('T0005','TT0005','NEGATIVE'); insert into
Test_Results values('T0006','TT0006','NEGATIVE');
insert into Test_Results
values('T0007','TT0007','POSITIVE'); insert into
Test_Results values('T0008','TT0008','NEGATIVE');

I have executed the alter queries at the end because for join the
address of patient is asked and in alter query it is asked to remove
address attributes.
19BCI012 UPANSHU
9 DAS

DDL statements (ALTER,


CONSTRAINT etc)

Q.1. Modify Hospital_Bill by adding an attribute


consulting_physician and add foreign key constraint for that
attribute. Use constraint name forforeign key constraint.

ANS-
alter table Hospital_Bill add consulting_physician varchar(15);
alter table Hospital_Bill add constraint fk_con_physician
foreign key(consulting_physician) references
Doctor(doc_id);

Q.2. In Patient table, replace address with three attributes namely


street, city and pincode.

ANS-
alter table Patient drop column p_address;
19BCI012 UPANSHU
9 DAS

alter table Patient add street


varchar(20); alter table Patient add city
varchar(15); alter table Patient add
pincode number(6);
19BCI012 UPANSHU
9 DAS

Q.3. Add an attribute Test_Time which can accept only two


values“Before food” and “After food” with proper constraint
name.

ANSWER-
alter table Patient add Test_Time varchar(10);
alter table Patient add constraint ck_test_time check(Test_Time =
'Before food' or Test_Time = 'After food');

Q.4. Remove the constraint only from test_time


attribute.

ANSWER-
alter table Patient drop constraint ck_test_time;
19BCI012 UPANSHU
9 DAS

Q.5. Drop address attribute from staff table and add


attributesdoor_no, street, city, and pincode.

ANSWER-
alter table Staff drop column
s_address; alter table Staff add
door_no number(5); alter table Staff
add street varchar(15); alter table
Staff add city varchar(15); alter table
Staff add pincode number(6);
19BCI012 UPANSHU
9 DAS

Q.6. Create a table Medicines with schema


medicines=(med_name, brand, dosage, manu_date, exp_date).
Ensure that manu_date should not be later than exp_date. Create
an appropriate constraint to ensure this.

ANSWER-
create table
Medicines( med_nam
e varchar(30), brand
varchar(20), primary
key(med_name),
dosage varchar(25),
manu_date date,
exp_date date,

constraint ck_manu_date check( manu_date < exp_date)


);
19BCI012 UPANSHU
9 DAS

Q.7. Remove the attributes dosage and brand from


Prescribed_Medicines and alter the medicine_name attribute as a
foreign key referencing thenew table Medicines.

ANSWER-
alter table Prescribed_Medicines drop column
dosage; alter table Prescribed_Medicines drop
column brand;
19BCI012 UPANSHU
9 DAS

alter table Prescribed_Medicines add constraint fk_medicine_name


foreign key(medicine_name) references Medicines(med_name);
19BCI0129 UPANSHU
DAS

Q.8. Create a view for doctors who are specialized in


‘Cardiology’ from Doctor table with attributes doc_id,
doc_name and gender.

ANSWER-
create view Cardiology_Doctors as select doc_id, doc_name,
d_gender from Doctor where specialist = 'Cardiology';

Q.9. Add an attribute No_of_staff in Department table and


create a constraint with constraint name to make sure the
number is >0

ANSWER-
alter table Department add No_of_staff int;
alter table Department add constraint ck_no_of_staff check(No_of_staff
> 0);
19BCI012 UPANSHU
9 DAS

Q.10. Add an attribute with In_Patient_prescription to store the


Room_Type which can store the values “AC” and “Non-AC”.

ANSWER-alter table In_Patient_Prescription add Room_Type


varchar(8);
alter table In_Patient_Prescription add constraint
ck_Room_Type check(Room_Type = 'AC' or Room_Type =
'Non-AC');
19BCI012 UPANSHU
9 DAS

SQL queries with JOIN


operation

Q.1. Find the HOD of doctor ‘Raghavan’ (Hint: you need to join
thetables DOCTOR and DEPARTMENT).

Using cartesian
Product ANSWER-

select hod from Department, Doctor where


Department.dept_no = Doctor.d_dept_no and doc_name =
'Raghavan';

Using Inner Join

select h.hod from Department h inner join Doctor d on


d.d_dept_no = h.dept_no where d.doc_name = 'Raghavan';
19BCI012 UPANSHU
9 DAS

Q.2. Find the list of all patients who were admitted in bed
number ‘B101’.

Using Cartesian
Product ANSWER-

select pat_name from Patient,In_Patient where


Patient.pat_id = In_Patient.ip_id and bed_no = 'B101';
19BCI012 UPANSHU
9 DAS

Using Inner
Join

select distinct p.pat_name from Patient p inner join In_Patient i on


p.pat_id = i.ip_id and i.bed_no = 'B101';
19BCI012 UPANSHU
9 DAS

Q.3. Display all the prescribed medicines of patient with


Pat_ID ‘P101’.

ANSWER-
select distinct medicine_name from Prescribed_Medicines,Patient
where
Patient.pat_id = 'P101';

Q.4. Display the test results of patient


‘Mani’.

ANSWER-
select results from Test_Results, Lab_Tests,Patient where
Test_Results.r_test_id = Lab_Tests.test_id and
Lab_Tests.l_pat_id = Patient.pat_id and pat_name = 'Mani';
19BCI012 UPANSHU
9 DAS

Q.5. Display all bills of bill amount more than 10000 rupees and
paid bythe patient ‘Steve’.

ANSWER-

select distinct b.bill_amount from Hospital_Bill b inner join Patient


p on b.i_pat_id = 'P103' where b.bill_amount > 10000;
19BCI0129 UPANSHU
DAS

Q.6. Find the category and address of the nurse who attended
the patient with pat_no ‘P220’.

Using Cartesian

Product ANSWER-

select category,s_address from Staff,Appointment


where Staff.staff_id = Appointment.nurse_id and
Appointment.a_pat_id = 'P220';

Using Inner Join

select s.category, s.s_address from Staff s inner join


Appointment a on s.staff_id = a.nurse_id where a.a_pat_id =
'P220';
19BCI012 UPANSHU
9 DAS

Q.7. Find the list of doctors who worked in the department which
is started on or after ’10-May-2018’.

Using Cartesian
Product ANSWER-

select doc_name from Doctor,Department where


Doctor.d_dept_no = Department.dept_no and estd_date >= '10-
May-2018';
19BCI012 UPANSHU
9 DAS

Using Inner Join

select d.doc_name from Doctor d inner join Department w on


d.d_dept_no = w.dept_no where w.estd_date >= '10-May-2018';

Q.8. Get the name of technicians who tests blood glucose level.

Using Cartesian

Product ANSWER-
select staff_name from Staff,test_types
where test_types.technician = Staff.staff_id and description = 'Blood
Glucose Level';
19BCI012 UPANSHU
9 DAS

Using Inner Join

select n.staff_name from Staff n inner join test_types t on


t.technician = n.staff_id where t.description = 'Blood Glucose
Level';
19BCI012 UPANSHU
9 DAS

Q.9. Display the details of all patients who were hospitalized


between’10- Mar2017’ and ’10-Apr-2017’.

ANSWER-
Select distinct *from In_Patient s, In_Patient e where s.doa > '10-
Mar2017'
and e.doa < '10-April-2017';

Q.10. Display the in-patient prescription of the patient whose


name is ‘Gayle’.

Using Cartesian

Product ANSWER-

select *from In_Patient_Prescription,Patient where


In_Patient_Prescription.in_pat_id = Patient.pat_id and pat_name =
'Gayle';
19BCI012 UPANSHU
9 DAS

Using Inner Join

select *from In_Patient_Prescription i inner join Patient p on


i.in_pat_id = p.pat_id where p.pat_name = 'Gayle';
19BCI012 UPANSHU
9 DAS

SQL queries with AGGREGATE and CHAR


functions

Q.1. Find the number of doctors who are working in the


department ‘D101’

ANSWER-
select count(*) as D101_Count from Doctor where d_dept_no =
'D101';
19BCI0129 UPANSHU
DAS

Q.2. Count the number of male patients who are treated by the
doctorwith doctor id ‘D101’

ANSWER-

select count(p.p_gender) as male_patient_count from


Patient,Appointment where Appointment.a_pat_id = Patient.pat_id
and Appointment.a_doc_id = 'D101';

Q.3. Find the total bill paid by the patient ‘Karthik’.

ANSWER-
select sum(Hospital_Bill.bill_amount) as total_bill_paid_by_karthik
from
Hospital_Bill,Patient where Hospital_Bill.i_pat_id =
Patient.pat_id and pat_name = 'Karthik';
19BCI012 UPANSHU
9 DAS

Q.4. Find the name and address of the patient who paid the highest
bill ofall patients.

ANSWER-
select pat_name,p_address from Patient,Hospital_Bill where
Patient.pat_id =
Hospital_Bill.i_pat_id and Hospital_Bill.bill_amount = (select
max(bill_amount) from Hospital_Bill);
19BCI012 UPANSHU
9 DAS

Q.5. Get the specialization of doctors whose name start with the
letter‘M’.

ANSWER-
select specialist,doc_name from Doctor where doc_name like 'M%';

Q.6. Find the all the patients details whose name is exactly 5
characters long.

ANSWER-
select *from Patient where pat_name like ' ';
19BCI012 UPANSHU
9 DAS

Q.7. Display the department names in ascending


order.

ANSWER-
select dept_name from Department order by dept_name
asc;
19BCI012 UPANSHU
9 DAS

Q.8. Get the gender wise count of patients.

ANSWER-
select count(p_gender ) as male_count from Patient where p_gender
= 'M';
select count(p_gender) as female_count from Patient where p_gender
= 'F'; select count(p_gender) as third_gender from Patient where
p_gender ='T';

Q.9. Get the count of doctors for each specialization.

ANSWER-
select count(specialist) as cardiologist_count from Doctor where
specialist =
'CARDIOLOGIST';
select count(specialist) as neurologist_count from Doctor where
specialist = 'NEUROLOGIST';
select count(specialist) as nephrologist_count from Doctor where
specialist = 'NEPHROLOGIST';
select count(specialist) as oncologist_count from Doctor where
specialist = 'ONCOLOGIST';
select count(specialist) as generalmedicine_count from Doctor where
specialist
= 'GENERALMEDICINE';
19BCI012 UPANSHU
9 DAS

Q.10. Get the total number tests conducted in any particular


date.

ANSWER-

select count(l_pat_id) from Lab_Tests where lab_date = '03-


MAY-2020';
19BCI012 UPANSHU
9 DAS

SQL queries - Nested


subqueries

Q.1. . All of the queries in “SQL queries with JOIN operation”


section can be tried with subqueries concept.

(a). Find the HOD of doctor ‘Raghavan’ (Hint: you need to join
the tables DOCTOR and DEPARTMENT)

ANSWER-

select hod from Department where dept_no = (select d_dept_no from


Doctor where doc_name = 'Raghavan');
19BCI012 UPANSHU
9 DAS

(b). Find the list of all patients who were admitted in bed
number ‘B101’.

ANSWER-

select pat_name from Patient where pat_id in (select ip_id from


In_Patient where bed_no = 'B101');

(c). Display all the prescribed medicines of patient with Pat_ID


‘P101’.

ANSWER-

select medicine_name from Prescribed_Medicines where m_pres_id in


(select ip_pres_id from In_Patient_Prescription where in_pat_id =
'P101');
19BCI012 UPANSHU
9 DAS

(d). Display the test results of patient ‘Mani’.

ANSWER-

select results from Test_Results where r_test_id = (select test_id from


Lab_Tests ,Patient where Lab_Tests.l_pat_id = Patient.pat_id and
pat_name = 'Mani');
19BCI0129 UPANSHU
DAS

(e). Display all bills of bill amount more than 10000 rupees and
paid by the patient ‘Steve’.

ANSWER-

select bill_amount from Hospital_Bill where i_pat_id = (select pat_id


from Patient where pat_name = 'Steve') and bill_amount > 10000;

(f). Find the category and address of the nurse who attended
the patient with pat_no ‘P220’.

ANSWER-

select category, s_address from Staff where staff_id in (select


nurse_id from Appointment where a_pat_id = 'P220');
19BCI012 UPANSHU
9 DAS

(g). Find the list of doctors who worked in the department which
isstarted on or after ’10-May-2018’.

ANSWER-

select doc_id, doc_name from Doctor where d_dept_no in (select


dept_no from Department where estd_date >= '10-MAY-2018');
19BCI012 UPANSHU
9 DAS

(h). Get the name of technicians who tests blood glucose


level.

ANSWER-

select staff_name from Staff where staff_id = (select technician


from test_types where description = 'Blood Glucose Level');

(i). Display the details of all patients who were hospitalized


between ’10- Mar2017’ and ’10-Apr-2017’

ANSWER-

select *from Patient where pat_id in (select ip_id from In_Patient


where start_time > '10-MARCH-2017' and end_time < '10-
APRIL-2017');
19BCI012 UPANSHU
9 DAS

(j). Display the in-patient prescription of the patient whose name


is ‘Gayle’.

ANSWER-

select *from In_Patient_Prescription where in_pat_id = (select pat_id


from Patient where pat_name = 'Gayle');
19BCI0129 UPANSHU
DAS

Q.3. Find the name and id of all patients who are older than all the
doctors in the entire ‘cardiology’ department. Use subqueries and
ALL operator.

ANSWER-

select pat_name, pat_id from Patient where p_dob < all(select


d_dob from Doctor where d_dept_no = 'D101' or d_dept_no =
'D100');

Q.4. Find the prescription ids of all prescription that included a


medicine from the brand ‘Ranbaxy’ using nested subqueries.

ANSWER-

select pres_id from Prescription where pres_id in (select


m_pres_id from Prescribed_Medicines where brand = 'Ranbaxy');
19BCI012 UPANSHU
9 DAS

Q.5. Find the list of patients who paid their bill through either
‘credit card’ or ‘debit card’ using subquery.

ANSWER-

select pat_name from Patient where pat_id in (select i_pat_id from


Hospital_Bill where payment_type = 'CREDIT CARD' or payment_type
= 'DEBIT CARD');
19BCI012 UPANSHU
9 DAS

SQL queries using other functions

Practice queries using DATE, NUMERIC, and CHARACTER


functions. Refer DBMS_Lab_Reference_Material.pdf file. Try to
upload at least two queries from each function category.

DATE FUNCTION QUERIES

Q.1. Find the last date of month from the established date for a
department with department number ‘D101’;

ANSWER-

select last_day(estd_date) from Department where dept_no = 'D101';


19BCI0129 UPANSHU
DAS

Q.2. Find the date after adding 4 months in the date with
appointment id ‘A101’.

ANSWER-

select add_months(a_date,4) as date_after_adding_4_months


from Appointment where app_id = 'A101';
19BCI012 UPANSHU
9 DAS

NUMERIC FUNCTION
QUERIERS

Q.1. Find the Square Root of Bill Amount of patient having


patient id as ‘P101’.

ANSWER-

select sqrt(bill_amount) from Hospital_Bill where i_pat_id = 'P101';

Q.2. Find the Absolute Value of Bill Amount of


patients.

ANSWER-

select abs(bill_amount) from Hospital_Bill;


19BCI012 UPANSHU
9 DAS

Q.3. Find the cos of all bill amounts.

ANSWER-

select cos(bill_amount) from


Hospital_Bill;
19BCI012 UPANSHU
9 DAS

CHARACTER FUNCTIONS
QUERIES

Q.1. Display the Department name in Lower


Letters.

ANSWER-

select lower(dept_name) from Department;

Q.2. Display the patient name in Upper


Letters.

ANSWER-

select upper(pat_name) from Patient;


19BCI012 UPANSHU
9 DAS

Q.3. Concanate the string ‘ GANGWAR’ in the patient


havingname ‘SAKSHAM PATEL’.

ANSWER-

select concat('SAKSHAM PATEL',' GANGWAR') from Patient where


pat_name = 'SAKSHAM PATEL';

You might also like