0% found this document useful (0 votes)
188 views19 pages

SQL Assignment Queries................................... 100 Queries

This document contains 100 SQL queries organized into sections to perform various operations on tables in a hospital database, including: 1. Altering tables to add or drop primary and foreign keys 2. Writing queries to select and display data from tables based on conditions, including joining multiple tables 3. Finding minimum, maximum, counts and other aggregations of data 4. Formatting dates and performing date calculations 5. Using functions like ISNULL and TOP to handle null values and limit results The queries demonstrate common data management and retrieval tasks for a database containing tables of patients, doctors, fees, rooms and other hospital information.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
188 views19 pages

SQL Assignment Queries................................... 100 Queries

This document contains 100 SQL queries organized into sections to perform various operations on tables in a hospital database, including: 1. Altering tables to add or drop primary and foreign keys 2. Writing queries to select and display data from tables based on conditions, including joining multiple tables 3. Finding minimum, maximum, counts and other aggregations of data 4. Formatting dates and performing date calculations 5. Using functions like ISNULL and TOP to handle null values and limit results The queries demonstrate common data management and retrieval tasks for a database containing tables of patients, doctors, fees, rooms and other hospital information.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 19

SQL ASSIGNMENT QUERIES...................................

100 QUERIES

1.Change The Patient Id In Patient master Table as Primary Key

ALTER TABLE patients_master


ADD CONSTRAINT pk_pid PRIMARY KEY(Patient_ID)

Droping the Primary key


ALTER TABLE PATIENTS_MASTER
DROP CONSTRAINT pk_pid

2.Change the doctor id in Doctor fees master table to Foreign key Ref: doctor Master

ALTER TABLE DOCTOR_FEES_MASTER


ADD CONSTRAINT fk_docid
FOREIGN KEY (Doctor_id)
REFERENCES DOCTORMASTER(DoctorID)

Droping the foreign key


ALTER TABLE DOCTOR_FEES_MASTER
DROP CONSTRAINT fk_docid

3.Display The patient Name whose Age is 20

SELECT patient_name
FROM dbo.PATIENTS_MASTER
WHERE age = 20

4.Display The Cardiologist details

SELECT * FROM dbo.DOCTORMASTER


WHERE DOCTORMASTER.Specialist = 'cardiologist'

5.Display The RoomId where the rent per day is > 200

SELECT RoomId FROM dbo.ROOM_RATE_MASTER


WHERE ROOM_RATE_MASTER.Rent_Per_day > 200

6.Display the patients who visited Today

SELECT * FROM dbo.PATIENTS_DETAILS


WHERE
Date_Of_Visit = '4-2-2010'

7.Display the Patients Who is suffering from ASTHMA

SELECT * FROM dbo.PATIENTS_DETAILS


WHERE PATIENTS_DETAILS.Disease = 'ASTHMA'
8.Display The in-patient Id who is in the hospital for more than 3 days

SELECT PATIENTS_DETAILS.Patient_ID
FROM dbo.PATIENTS_DETAILS
WHERE DATEDIFF(day,Date_Of_Visit,Date_Of_Discharge)>3

9.Display The patient Name whose Age is greater than 20 and less than 50

SELECT Patient_Name
FROM dbo.PATIENTS_MASTER
WHERE PATIENTS_MASTER.Age
BETWEEN 21
AND 49

SELECT Patient_Name
FROM dbo.PATIENTS_MASTER
WHERE PATIENTS_MASTER.Age >20
AND PATIENTS_MASTER.Age < 50

10.Display the doctors id who get the fees for inpatient rs 250 and fees greater than rs 400

SELECT Doctor_Id
FROM dbo._FEES_IN_PATIENTS AS god
WHERE god.Doctor_Fees > 400
OR god.Doctor_Fees = 250

11)--DISPLAY DOCTOR ID,NAME,SPECILIST, FEES FOR INPATIENT, OUT PATIENT BY


JOINING DOCTOR MASTER AND DOCTOR FEES MASTER
SELECT DOCTORID,DOCTOR_NAME,SPECIALIST,OUT_PATIENTS,IN_PATIENTS
FROM DOCTOR_FEES_MASTER,DOCTORMASTER
WHERE DOCTORMASTER.DOCTORID = DOCTOR_FEES_MASTER.DOCTOR_ID

12)--DISPLAY THE ROOMID,ROOM TYPE,NUMBER OF BEDS, ROOM DESCRIPTION,


ROOM RENT PER DAY BY USING ANSI JOIN
SELECT ROOM_ID,ROOM_TYPE,NO_OF_BEDS,ROOM_DESC,RENT_PER_DAY
FROM ROOM_MASTER JOIN ROOM_RATE_MASTER
ON ROOM_ID=ROOM_RATE_ID

13)--DISPLAY THE OUT PATIENT DETAILSLIKE PATIENT NAME, PATIENT ADDRESS


1 ,PATIENT ADDRESS 2, DATE OF BITH,PHONE,SEX,BLOOD GROUP,AGE,
SYMPTOM,DISEASE,TREATMENT
SELECT PATIENT_NAME,ADDRESS1,ADDRESS2,DATEOFBIRTH,PHONE,SEX,BLOOD_GROUP,
PATIENTS_MASTER..AGE,SYMPTOMS,DISEASE,TREATMENT
FROM PATIENTS_MASTER,PATIENTS_DETAILS
WHERE PATIENTS_MASTER.PATIENT_ID=PATIENTS_DETAILS.PATIENT_ID

14)--DISPLAY THE PATIENT NAME AND DOCTOR NAME FROM FEES DETAILS FOR OUT
PATIENT WHERE THE TOTAL AMOUNT PAID BY THE PATIENT IS RS 4000 AND RS 500
SELECT DOCTOR_NAME,PATIENT_NAME
FROM PATIENTS_MASTER,FEES_OUT_PATIENTS,DOCTORMASTER
WHERE FEES_OUT_PATIENTS.DOCTOR_ID=DOCTORMASTER.DOCTORID AND
FEES_OUT_PATIENTS.PATIENT_ID=PATIENTS_MASTER.PATIENT_ID AND
TOTAL_AMOUNT=4000 OR TOTAL_AMOUNT=5000

15)--DISPLAY THE PATIENT DETAILS WHOSE NAME STARTS WITH S


SELECT *
FROM PATIENTS_MASTER
WHERE PATIENT_NAME LIKE 'S%'

16))--DISPLAY THE PATIENT DETAILS WHOSE NAME STARTS WITH A,S


SELECT *
FROM PATIENTS_MASTER
WHERE PATIENT_NAME LIKE 'S%' AND PATIENT_NAME LIKE 'A%'

17)--DISPLAY THE PATIENT DETAILS WHOSE NAME DOES NOT STARTS WITH A,S
SELECT *
FROM PATIENTS_MASTER
WHERE PATIENT_NAME NOT LIKE 'S%' AND PATIENT_NAME NOT LIKE 'A%'

18)DISPLAY THEPATIENT WHO BORN IN SAME MONTH


SELECT DISTINCT P.PATIENT_NAME,DATEPART(MM,P.DATEOFBIRTH) AS 'MONTH'
FROM PATIENTS_MASTER P,PATIENTS_MASTER P1
WHERE
DATEPART(MONTH,P.DATEOFBIRTH)=DATEPART(MONTH,P1.DATEOFBIRTH)
AND P.PATIENT_ID<>P1.PATIENT_ID

THE PATIENT DETAILS WHO VISITED THE HOSPITAL IN EXACTLY


19)DISPLAY
ONE YEAR BEFORE THIS DATE
SELECT *
FROM PATIENTS_DETAILS
WHERE DATEDIFF(DAY,DATE_OF_VISIT,GETDATE())=365

20)--DISPLAY THE PATIENT DETAILS WHO VISITED THE HOSPITAL IN EXACTLY


ONE MONTH BEFORE THIS DATE
SELECT *
FROM PATIENTS_DETAILS
WHERE DATEDIFF(MONTH,DATE_OF_VISIT,GETDATE())=1
USE hospital1
GO
SELECT * FROM dbo.DOCTORMASTER
GO
SELECT * FROM dbo.FEES_OUT_PATIENTS
SP_HELP DOCTORMASTER
GO
SP_HELP FEES_IN_PATIENTS
SP_HELP FEES_OUT_PATIENTS

--22.Display the Doctor details who get the highest fees for out patient

SELECT d1.DoctorID [DOCTOR_ID],


d1.Doctor_Name [DOCTOR_NAME],
d1.Specialist [SPECIALIZATION],
d1.Gender [SEX] ,
d2.Total_Amount [AMOUNT]
FROM dbo.DOCTORMASTER d1
JOIN dbo.FEES_OUT_PATIENTS d2
ON d1.DoctorID = d2.Doctor_Id
WHERE d2.Total_Amount = (SELECT MAX(Total_Amount) FROM FEES_OUT_PATIENTS)
ORDER BY DoctorID

--23.Display the doctor details who get the lowest fees for in patient

SELECT d1.DoctorID [DOCTOR_ID],


d1.Doctor_Name [DOCTOR_NAME],
d1.Specialist [SPECIALIZATION],
d1.Gender [SEX] ,
d2.Total_Amount [AMOUNT]
FROM DOCTORMASTER d1
JOIN FEES_IN_PATIENTS d2
ON d1.DoctorID = d2.d_ID
WHERE d2.Total_Amount = (SELECT MIN(d2.Total_Amount)FROM FEES_IN_PATIENTS d2)
ORDER BY d1.DoctorID

--24.Display the doctor details who get the highest sum of fees for both out and in patient

SELECT TOP 1 d1.DoctorID [DOCTOR_ID],


d1.Doctor_Name [DOCTOR_NAME],
d1.Specialist [SPECIALIZATION],
d1.Gender [SEX] ,
d2.Total_Amount [IN_AMOUNT],
d3.Total_Amount [OUT_AMOUNT]

FROM DOCTORMASTER d1
JOIN dbo.FEES_IN_PATIENTS d2
ON d1.DoctorID = d2.doctor_ID
JOIN dbo.FEES_OUT_PATIENTS d3
ON d2.doctor_ID = d3.doctor_ID
--WHERE (d2.Total_Amount = (SELECT MAX(d2.Total_Amount) FROM fees_in_patients d2)) AND (d3.Total_Amount
= (SELECT MAX(d3.Total_Amount) FROM fees_in_patients d3))
ORDER BY d1.DOCTORID

--25.Display the doctor details who get the highest sum of fees for both out and in patient

--DECLARE @var1 sql_varient

SELECT d1.DoctorID [DOCTOR_ID],


d1.Doctor_Name [DOCTOR_NAME],
d1.Specialist [SPECIALIZATION],
d1.Gender [SEX],
d2.In_Patients [FEE_INPATIENTS],
d2.OutPatients [FEE_OUTPATIENTS]

FROM DOCTORMASTER d1
JOIN DOCTOR_FEES_MASTER d2
ON d1.DoctorID = d2.Doctor_Id
WHERE (d2.outPatients + d2.In_Patients) = (SELECT MAX(d2.OutPatients + d2.In_Patients)FROM
DOCTOR_FEES_MASTER d2)
ORDER BY d1.DoctorID

--25.Display the doctor details who get the lowest average of fees for both out and in patient

SELECT d1.DoctorID [DOCTOR_ID],


d1.Doctor_Name [DOCTOR_NAME],
d1.Specialist [SPECIALIZATION],
d1.Gender [SEX],
d2.In_Patients [FEE_INPATIENTS],
d2.OutPatients [FEE_OUTPATIENTS],
(d2.outPatients + d2.In_Patients) AS TOTAL,
(d2.outPatients + d2.In_Patients)/2 AS [AVG]
FROM DOCTORMASTER d1
JOIN DOCTOR_FEES_MASTER d2
ON d1.DoctorID = d2.Doctor_Id

WHERE (d2.outPatients + d2.In_Patients)/2 = (SELECT (MIN(d2.outPatients + d2.In_Patients)/2) FROM


DOCTOR_FEES_MASTER d2)
ORDER BY d1.DoctorID

--26.Display the room details which has the highest room rent per day
SELECT d1.Room_Id AS [ROOM_ID],
d1.Room_Type AS ROOM_TYPE,
d1.Room_Desc AS ROOM_DESC,
d1.No_Of_Beds AS NO_OF_BEDS,
d2.Rent_Per_Day AS RENT
FROM ROOM_MASTER d1
JOIN dbo.ROOM_RATE_MASTER d2
ON d1.Room_Id = d2.RoomId
WHERE d2.Rent_Per_Day = (SELECT MAX( d2.Rent_Per_Day)FROM dbo.ROOM_RATE_MASTER d2 )
ORDER BY d2.RoomId

--27.Display The number of patients for each doctor who visited today
SELECT d1.DoctorId AS DOC_ID,
d1.Doctor_Name AS DOC_Name,
COUNT(*) AS [COUNT],
d2.Date_Of_Visit AS DATE_VISIT
FROM dbo.DOCTORMASTER d1
JOIN dbo.PATIENTS_DETAILS d2
ON d1.DoctorId = d2.Doctor_Id
WHERE d2.Date_Of_Visit =(SELECT MAX(d2.Date_Of_Visit)FROM PATIENTS_DETAILS d2)
GROUP BY d1.DoctorId,d1.Doctor_Name,d2.Date_Of_Visit

--28.Display the doctor who visited more number of patients on Today

SELECT /*TOP 1*/ d1.DoctorId AS DOC_ID,


d1.Doctor_Name AS DOC_Name,
COUNT(*) AS [COUNT],
d2.Date_Of_Visit AS DATE_VISIT
FROM dbo.DOCTORMASTER d1
JOIN dbo.PATIENTS_DETAILS d2
ON d1.DoctorId = d2.Doctor_Id
WHERE d2.Date_Of_Visit = (SELECT MAX(d2.Date_Of_Visit)FROM PATIENTS_DETAILS d2)
--HAVING COUNT(*) >= 5
GROUP BY d1.DoctorId,d1.Doctor_Name,d2.Date_Of_Visit

--29.Display the in patient details who paid high

USE HOSPITAL1
GO
SELECT * FROM dbo.FEES_OUT_PATIENTS

SELECT d1.Patient_ID AS [P_ID],


d1.Patient_Name AS [P_NAME],
d1.Address1 AS [P_ADD],
d1.Phone AS [P_PHONE],
/*d2.Total_Amount*/ ISNULL(d2.Total_Amount,0) AS [IN_AMOUNT],
ISNULL(d3.Total_Amount,0) AS [OUT_AMOUNT],
ISNULL((d2.Total_Amount + d3.Total_Amount),0) AS [TOTAL_AMOUNT]
FROM dbo.PATIENTS_MASTER d1
LEFT OUTER JOIN dbo.FEES_IN_PATIENTS d2
ON d1.Patient_ID = d2.Patient_ID
FULL OUTER JOIN dbo.FEES_OUT_PATIENTS d3
ON d2.Patient_ID = d3.Patient_ID
WHERE (d2.Total_Amount + d3.Total_Amount) = (SELECT (d2.Total_Amount + d3.Total_Amount) FROM
dbo.FEES_IN_PATIENTS d2 JOIN dbo.FEES_OUT_PATIENTS d3 ON d2.Patient_ID = d3.Patient_ID )
ORDER BY d1.Patient_ID

SELECT DATENAME(month,GETDATE()) AS [MONTH_NAME]

ISNULL

-- 30 . Display The top 5 doctors who are cardiologiest


SELECT TOP 5 * FROM dbo.DOCTORMASTER
WHERE Specialist = 'cardiologist'

SELECT * FROM dbo.DOCTORMASTER


WHERE Specialist
IN ('cardiologist')

--31.Display the oldest doctor in the hospital

SELECT MIN(d1.Date_Of_Birth) AS DOB ,d1.DoctorID


FROM dbo.DOCTORMASTER d1

GROUP BY d1.DoctorID

SELECT DISTINCT d1.DoctorID,d1.Doctor_Name,d1.Date_Of_Birth


FROM dbo.DOCTORMASTER d1
INNER JOIN dbo.DOCTORMASTER d2
ON d1.Date_Of_Birth = (SELECT (MIN(d2.Date_Of_Birth)) FROM dbo.DOCTORMASTER d2)
GROUP BY d1.DoctorID,d1.Doctor_Name,d1.Date_Of_Birth

--32.Display the youngest patient in the hospital

SELECT * FROM PATIENTS_DETAILS


SELECT * FROM PATIENTS_MASTER

SELECT d1.Patient_Name AS [P_NAME],


d1.Patient_ID AS [P_ID],
d1.DateOfBirth AS [P_DOB]
FROM dbo.PATIENTS_MASTER d1
WHERE d1.DateOfBirth = (SELECT MAX(d2.DateOfBirth)FROM PATIENTS_MASTER d2)
GROUP BY d1.DateOfBirth,d1.Patient_Name,d1.Patient_ID
ORDER BY d1.Patient_ID

--33.Display the number of patient who have b+ and a+ blood group

SELECT d1.Patient_Name AS [P_NAME],


d1.Patient_ID AS [P_ID],
d1.Blood_Group AS [P_BLOOD_GROUP]
FROM dbo.PATIENTS_MASTER d1
WHERE d1.Blood_Group
IN ('a+','b+')

SELECT COUNT(*) AS [P_COUNT],


d1.Blood_Group AS [P_BLOOD_GROUP]
FROM dbo.PATIENTS_MASTER d1
WHERE d1.Blood_Group
IN ('a+','b+')
GROUP BY d1.Blood_Group

USE hospital1
SELECT * FROM

--34.Display the doctor name and total fees he/she get for each patient
SELECT d1.DoctorID AS [DOC_ID],
d1.Doctor_Name AS [ DOC_NAME],
--d2.Patient_Name AS [PAT_NAME],
--d2.Patient_ID AS [PAT_ID],
d3.Outpatients AS [OUT_PAT_FEES],
d3.In_patients AS [IN_PAT_FEES],
d3.Outpatients + d3.In_patients AS [PAT_TOTAL]
FROM dbo.doctormaster d1
JOIN dbo.doctor_fees_master d3
ON d1.doctorid = d3.doctor_id
ORDER BY d1.doctorID

--35.Display The Oldest female doctor in Hospital

SELECT * FROM dbo.doctormaster

SELECT d1.DoctorID AS [DOC_ID],


d1.Doctor_Name AS [DOC_NAME],
d1.Gender AS [DOC_GEN],
d1.Date_Of_Birth AS [DOB],
DATEPART(day,d1.Date_Of_Birth) AS [Day],
DATEPART(month,d1.Date_Of_Birth) AS [MONTH],
DATEPART(year,d1.Date_Of_Birth) AS [YEAR],
DATEDIFF(year,d1.Date_Of_Birth,GETDATE()) AS [AGE]
FROM dbo.DOCTORMASTER d1
WHERE d1.Date_Of_Birth = (SELECT MIN(d1.Date_Of_Birth) FROM dbo.DOCTORMASTER d1 WHERE d1.Gender =
'F')
ORDER BY d1.DoctorID

--36.Display The Doctorname, specialist,Gender,age from doctor details

SELECT d1.DoctorID AS [DOC_ID],


d1.Doctor_Name AS [DOC_NAME],
d1.Gender AS [DOC_GEN],
d1.Date_Of_Birth AS [DOB],
DATEPART(day,d1.Date_Of_Birth) AS [Day],
DATEPART(month,d1.Date_Of_Birth) AS [MONTH],
DATEPART(year,d1.Date_Of_Birth) AS [YEAR],
DATEDIFF(year,d1.Date_Of_Birth,GETDATE()) AS [AGE]
FROM dbo.DOCTORMASTER d1

--37.Display the room details which has maximum number of beds and rent per day of that room

SELECT * FROM dbo.ROOM_MASTER


GO
SELECT * FROM dbo.ROOM_RATE_MASTER d2

SELECT * FROM dbo.ROOM_MASTER d1


JOIN dbo.ROOM_RATE_MASTER d2
ON d1.Room_Id = d2.RoomId
WHERE d1.No_of_Beds = (SELECT MAX(d1.No_of_Beds) FROM dbo.ROOM_MASTER d1)
ORDER BY d1.Room_Id

--38.Display the doctor details whose address2 is empty


SELECT * FROM dbo.DOCTORMASTER d1
WHERE d1.Doctor_Address2 IS NULL

--39.Display the number of patients discharged in the month of november

SELECT * FROM dbo.PATIENTS_DETAILS

SELECT COUNT(*) AS NO_PATIENTS


FROM dbo.PATIENTS_DETAILS
WHERE DATEPART(month,Date_Of_Discharge)='11'

--40.Display the number of patients visited last year

SELECT COUNT(*) AS NO_PAT_LASTYR


FROM dbo.PATIENTS_DETAILS d1
WHERE DATEDIFF(year,d1.Date_Of_Visit,GETDATE())=1

--41.Display out patient who paid maximum amount in the month of november and the doctor incharge

SELECT * FROM dbo.PATIENTS_MASTER


GO
SELECT * FROM dbo.FEES_OUT_PATIENTS

SELECT TOP 1 d1.Patient_ID AS [P_ID],


d1.Patient_Name AS [P_NAME],
d1.DateOfRegistration AS [P_Regist],
CONVERT (varchar(30),DATEPART(Month,d1.DateOfRegistration),102) AS [Month],
d2.Doctor_Id AS [DOC_id],
d2.Total_Amount AS [Total_Amount]
FROM dbo.PATIENTS_MASTER d1
JOIN dbo.FEES_OUT_PATIENTS d2
ON d1.Patient_ID = d2.Patient_ID
WHERE d2.Total_Amount = (SELECT MAX(d2.Total_Amount) FROM dbo.FEES_OUT_PATIENTS d2 JOIN
dbo.PATIENTS_MASTER d1 ON DATEPART(Month,d1.DateOfRegistration) = '2' )
ORDER BY d1.Patient_ID

--42.Display The number of in patients admitted yesterday

SELECT * FROM dbo.PATIENTS_DETAILS

SELECT COUNT(*) AS [COUNT]


FROM dbo.PATIENTS_DETAILS d1
WHERE d1.Date_Of_Visit = (SELECT (GETDATE() -1 ))

--43.Display the room details which got the minimum rent per day

SELECT d1.*,d2.Rent_Per_Day
FROM dbo.ROOM_MASTER d1
JOIN dbo.ROOM_RATE_MASTER d2
ON d1.Room_Id = d2.RoomId
WHERE d2.Rent_Per_Day = (SELECT MIN(d2.Rent_Per_Day ) FROM dbo.ROOM_RATE_MASTER d2)

--44.Display the number of patients who have same symptoms and got different treatments
SELECT * FROM dbo.PATIENTS_DETAILS d1

SELECT COUNT(*) AS NO_OF_PATIENTS,


d1.Symptoms,
d1.Treatment AS [TREAT]
FROM dbo.PATIENTS_DETAILS d1
GROUP BY d1.Symptoms,d1.Treatment

--45.Display the male doctor details who celebrated their birth day last month

SELECT *
FROM dbo.DOCTORMASTER d1
WHERE DATEDIFF(month,GETDATE(),d1.Date_Of_Birth)>1

--49.Display the patient detalis who visited the hospital from 1/9/2008 to till date

Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

SELECT p.*
FROM
dbo.PATIENTS_DETAILS p
WHERE Date_Of_Visit BETWEEN '1/9/2008' AND GETDATE()

--50.Display The number of doctors whose age is greated than 50

SELECT d.*,DATEDIFF(Year,Date_Of_Birth,GETDATE()) AS AGE FROM dbo.DOCTORMASTER d


WHERE DATEDIFF(Year,Date_Of_Birth,GETDATE()) >50

SELECT COUNT(*) AS [COUNT] FROM dbo.DOCTORMASTER d


WHERE DATEDIFF(Year,Date_Of_Birth,GETDATE()) >50

--51.Display The male patient details whose second letter is 'A'

SELECT p.*
FROM dbo.PATIENTS_MASTER p
WHERE p.Patient_Name LIKE '_a%' AND p.Sex = 'M'

--52.Display The male patient details whose second and last letter is 'A'

SELECT p.*
FROM dbo.PATIENTS_MASTER p
WHERE p.Patient_Name LIKE '_a%a' AND p.Sex = 'M'

--53.Display the number of beds in the room where the in patient 'Akilan' is admitted

SELECT p.Patient_ID AS P_ID,


p.Patient_Name AS P_NAME,
q.Room_Id AS ROOM_ID,
r.No_of_beds AS [COUNT_BEDS]
FROM dbo.PATIENTS_MASTER p
JOIN dbo.PATIENTS_DETAILS q
ON p.Patient_ID = q.Patient_ID
JOIN dbo.ROOM_MASTER r
ON r.Room_Id = q.Room_Id
GROUP BY p.Patient_ID,p.Patient_Name,q.Room_Id,r.No_of_beds
HAVING p.Patient_Name = 'Akilan'

--54.Display the male patient who have the symptoms of ashma and getting the treatment by DR Ram

SELECT d1.Patient_ID AS P_ID,


d1.Patient_Name AS P_NAME,
d3.DoctorId AS DOC_ID,
d3.Doctor_Name AS DOC_NAME
FROM dbo.Patients_Master d1
JOIN dbo.Patients_Details d2
ON d1.Patient_Id = d2.Patient_Id
JOIN dbo.DOCTORMASTER d3
ON d2.Doctor_Id = d3.DoctorId
WHERE d2.symptoms = 'Wheezing'
AND d1.Sex = 'M'

--55.Display the sum of total amount fees for an out patient of each doctor where the sum of total amount fees is > than
50000

SELECT p.Patient_Id AS [P_ID],


p.Patient_Name AS [P_NAME],
q.Doctor_Id AS [DOC_ID],
r.Doctor_Name AS [DOC_NAME],
q.Total_Amount AS [TOTAL]
FROM dbo.Patients_Master p
JOIN dbo.Fees_out_Patients q
ON p.Patient_Id = q.Patient_Id
JOIN dbo.DOCTORMASTER r
ON q.Doctor_Id = r.DoctorId
WHERE q.Total_Amount > 5000

--56.Display the patient details who were in the AC room

SELECT r.Patient_Id AS [P_ID],


p.Patient_Name AS [P_NAME],
d.*
FROM dbo.ROOM_MASTER d
JOIN dbo.PATIENTS_DETAILS r
ON d.Room_Id = r.Room_Id
JOIN dbo.PATIENTS_MASTER p
ON p.Patient_Id = r.Patient_Id
WHERE d.Room_Type = 'AC'

--57.Display the patient details who were in the AC room from 8/8/2008 to 9/9/2008

SELECT * FROM dbo.PATIENTS_DETAILS

SELECT r.Patient_Id AS [P_ID],


p.Patient_Name AS [P_NAME],

d.*
FROM dbo.ROOM_MASTER d
JOIN dbo.PATIENTS_DETAILS r
ON d.Room_Id = r.Room_Id
JOIN dbo.PATIENTS_MASTER p
ON p.Patient_Id = r.Patient_Id
WHERE d.Room_Type = 'AC'
AND Date_Of_Visit BETWEEN '8/8/2008' AND '9/9/2009'

--58.Display the patient name,patient type, doctor name,room type,room description, duration(difference between date of
visit and date of discharge,symptom,treatment,disease)

--59.Display the patient who was in the hospital for more number of days

USE hospital1
GO
SELECT p.Patient_Id,
p.Patient_Name,
q.Date_Of_Visit,
q.Date_Of_Discharge,
DATEDIFF(day,q.Date_Of_Visit,q.Date_Of_Discharge)AS DAYS
FROM dbo.Patients_Master p
JOIN dbo.Patients_Details q
ON p.Patient_Id = q.Patient_Id
WHERE DATEDIFF(day,q.Date_Of_Visit,q.Date_Of_Discharge) = (SELECT
MAX(DATEDIFF(day,q.Date_Of_Visit,q.Date_Of_Discharge)) FROM dbo.Patients_Details q)
GROUP BY p.Patient_Id, p.Patient_Name, q.Date_Of_Visit,q.Date_Of_Discharge

--60.Display the male patient who got treatment from a male doctor

SELECT * FROM dbo.DOCTORMASTER


GO
SELECT * FROM dbo.PATIENTS_DETAILS
GO
SELECT * FROM dbo.PATIENTS_MASTER

SELECT --p.Patient_Id AS [P_ID],


r.Patient_Name AS [P_NAME],
r.Sex AS [PATIENT_SEX] ,
--q.DoctorID AS [DOC_ID],
q.Doctor_Name AS [DOC_NAME],
q.Gender AS [DOC_SEX]
FROM dbo.PATIENTS_DETAILS p
JOIN dbo.DOCTORMASTER q
ON q.DoctorID = p.Doctor_ID
JOIN dbo.PATIENTS_MASTER r
ON p.Patient_Id = r.Patient_Id
WHERE q.Gender = 'M' AND r.Sex = 'M'
ORDER BY q.DoctorID

--61.Display the youngest doctor who is specialized in dermatology

SELECT * FROM dbo.DOCTORMASTER

SELECT d1.*,
DATEDIFF(Year,d1.Date_Of_Birth,GETDATE()) AS AGE
FROM dbo.DOCTORMASTER d1
WHERE d1.Date_Of_Birth = (SELECT MAX(d1.Date_Of_Birth) FROM dbo.DOCTORMASTER d1 WHERE
d1.Specialist = 'dermatology' )
--62.Display the room description where the room rent per day =500

SELECT * FROM ROOM_RATE_MASTER


Go
SELECT * FROM ROOM_MASTER

SELECT d1.Room_Id AS ROOM_ID,


d1.Room_Type AS ROOM_TYPE,
d2.Rent_Per_day AS RENT_PER_DAY,
d1.Room_Desc AS DESCRIPTION
FROM ROOM_MASTER d1
JOIN ROOM_RATE_MASTER d2
ON d1.Room_Id = d2.Room_Rate_Id
WHERE d2.Rent_Per_Day = '500'

--63.Display the number of patients in the room where the rent per day = 500

SELECT COUNT(*) AS [COUNT_ OF_PERSON]


FROM dbo.PATIENTS_DETAILS d1
JOIN dbo.ROOM_RATE_MASTER d2
ON d1.Room_Id = d2.RoomId
WHERE d2.Rent_Per_Day = '500'

--64.Display the younger female doctor whose name does not starts with 'A' and not a 'pediatrician'

SELECT d1.DoctorId AS [DOC_ID],


d1.Doctor_Name AS [DOC_NAME],
d1.Gender AS [DOC_GENDER],
d1.Specialist AS [DOC_SPECIAL],
d1.Date_Of_birth AS [DOC_DOB],
DATEDIFF(YEAR,d1.Date_Of_birth,GETDATE()) AS AGE
FROM dbo.DOCTORMASTER d1
WHERE d1.Gender ='F' AND d1.Doctor_Name NOT LIKE 'a%' AND d1.Specialist NOT IN ('pediatrician')
AND DATEDIFF(YEAR,d1.Date_Of_birth,GETDATE()) = (SELECT
MIN(DATEDIFF(YEAR,d1.Date_Of_birth,GETDATE())) FROM dbo.DOCTORMASTER d1)

--65.Display the female out patients whose age is below 30 and paid the total amount > 5000

SELECT d1.Patient_Id AS PAT_ID,


d1.Patient_Name AS PAT_NAME,
d1.Sex AS PAT_SEX,
d1.DateOfBirth AS PAT_DOB,
d2.Total_Amount AS [TOTAL>5000],
DATEDIFF(year,d1.DateOfBirth,GETDATE()) AS AGE
FROM dbo.PATIENTS_MASTER d1
JOIN dbo.FEES_OUT_PATIENTS d2
ON d1.Patient_Id = d2.Patient_Id
WHERE DATEDIFF(year,d1.DateOfBirth,GETDATE()) < 30
AND d1.Sex = 'F'

--66.Display the male doctor whose sum of in patient and out patient fees is minimum

SELECT d1.DoctorID AS [DOC_ID],


d1.Doctor_Name As [DOC_NAME],
d1.Gender AS [DOC_GENDER],
SUM(d2.Total_Amount) AS [SUM_IN_PATIENT],
SUM(d3.Total_Amount) AS [SUM_OUT_PATIENT],
(d2.Total_Amount + d3.Total_Amount ) AS [TOTAL_AMOUNT]
FROM dbo.DOCTORMASTER d1
JOIN dbo.FEES_IN_PATIENTS d2
ON d2.Doctor_Id = d1.DoctorID
JOIN dbo.FEES_OUT_PATIENTS d3
ON d3.Doctor_ID = d1.DoctorID
WHERE (d2.Total_Amount + d3.Total_Amount ) = (SELECT (MIN(d2.Total_Amount + d3.Total_Amount )) FROM
dbo.FEES_IN_PATIENTS d2 JOIN dbo.FEES_OUT_PATIENTS d3 ON d2.Doctor_Id = d3.Doctor_Id )
GROUP BY d1.DoctorID,d1.Doctor_Name,d1.Gender,d2.Total_Amount,d3.Total_Amount

--67.Display the male patient details in room number 3 and his age is less than 12

SELECT d1.Patient_Id AS PAT_ID,


d3.Patient_Name AS PAT_NAME,
d3.Sex AS PAT_SEX,
d3.DateOfBirth AS PAT_DOB,
d1.Room_Id AS ROOM_NO,
DATEDIFF(year,d3.DateOfBirth,GETDATE()) AS AGE

FROM dbo.PATIENTS_DETAILS d1
JOIN dbo.ROOM_MASTER d2
ON d1.Room_Id = d2.Room_Id
JOIN dbo.PATIENTS_MASTER d3
ON d1.Patient_Id = d3.Patient_Id
WHERE d3.Sex = 'F' AND DATEDIFF(year,d3.DateOfBirth,GETDATE()) < 12

--68.Display the number of patients discharged between 31/1/2008 to 31/3/2008 who have the symptoms of asthma

SELECT COUNT(*) AS [COUNT]


FROM dbo.PATIENTS_DETAILS d1
WHERE d1.Date_Of_Discharge IN (SELECT d1.Date_Of_Discharge FROM dbo.PATIENTS_DETAILS d1 WHERE
d1.Date_Of_Discharge BETWEEN '1/31/2008' AND '3/31/2008' )

--69.Display the doctor who gets second highest fees for out patients in the hospital

SELECT * FROM DOCTOR_FEES_MASTER

SELECT TOP 1 d1.Doctor_Id AS DOC_ID,


MAX(In_Patients) AS SECOND_LARGEST
FROM DOCTOR_FEES_MASTER d1
WHERE In_Patients < (SELECT MAX(In_Patients) FROM DOCTOR_FEES_MASTER d1)
GROUP BY d1.Doctor_Id

--70.Display the in patient who pays second highest amount in the hospital

SELECT TOP 1 d1.Doctor_Id AS DOC_ID,


MAX(In_Patients) AS SECOND_LARGEST
FROM DOCTOR_FEES_MASTER d1
--JOIN
WHERE In_Patients < (SELECT MAX(In_Patients) FROM DOCTOR_FEES_MASTER d1)
GROUP BY d1.Doctor_Id

--71.Display the doctor who get the fees higher from the in patient than the amount specied in the fees master

SELECT d1.DoctorId AS DOC_ID,


d1.Doctor_Name AS DOC_NAME,
d2.Doctor_Fees AS DOC_FEES
FROM dbo.DOCTORMASTER d1
JOIN dbo.FEES_IN_PATIENTS d2
ON d1.DoctorId = d2.Doctor_Id
JOIN dbo.DOCTOR_FEES_MASTER d3
ON d3.Doctor_Id = d2.Doctor_Id
WHERE d2.Doctor_Fees > d3.In_Patients
GROUP BY d1.DoctorId,d1.Doctor_Name,d2.Doctor_Fees

--72.Display the female in-patient who is in the AC room for a long time

SELECT d1.Patient_Id AS PAT_ID,


d3.Patient_Name AS PAT_NAME,
d3.Sex AS PAT_SEX,
d2.Room_Id AS ROOM_NUM,
d2.Room_Type AS ROOM_TYPE,
d1.Date_Of_Visit AS DATE_OF_VISIT,
d1.Date_Of_Discharge AS DATE_OF_DISCHARGE,
DATEDIFF(day,d1.Date_Of_Visit,GETDATE()) AS DAYS_IN_HOSPITAL
FROM dbo.PATIENTS_DETAILS d1
JOIN dbo.ROOM_MASTER d2
ON d1.Room_Id = d2.Room_Id
JOIN dbo.PATIENTS_MASTER d3
ON d3.Patient_Id = d1.Patient_Id
WHERE DATEDIFF(day,d1.Date_Of_Visit,GETDATE()) = (SELECT
(MAX(DATEDIFF(day,d1.Date_Of_Visit,GETDATE()))) FROM dbo.PATIENTS_DETAILS d1 JOIN
dbo.ROOM_MASTER d2 ON d1.Room_Id = d2.Room_Id JOIN dbo.PATIENTS_MASTER d3 ON d3.Patient_Id =
d1.Patient_Id WHERE d2.Room_Type = 'AC' )

--73.Display the female patient who is not suffering from ashma

SELECT d1.Patient_Id AS PAT_ID,


d3.Patient_Name AS PAT_NAME,
d3.Sex AS PAT_SEX,
d1.Disease AS PAT_DISEASE
FROM dbo.PATIENTS_DETAILS d1
JOIN dbo.PATIENTS_MASTER d3
ON d3.Patient_Id = d1.Patient_Id
WHERE d3.Sex = 'F' AND d1.Disease <> 'ASTHMA'
--WHERE d3.Sex = 'F' AND d1.Disease NOT IN 'ASTHMA'

--74.Display the number of patients who are not yet discharged


USE hospital1
GO

SELECT COUNT(*) AS [YET TO B DISCHRGE] FROM dbo.PATIENTS_DETAILS d1


WHERE d1.Date_Of_Discharge > GETDATE()

--75.Display the number of female patients discharged last month

SELECT COUNT(*) AS [DISCAHREG LAST MONTH] FROM dbo.PATIENTS_DETAILS d1


WHERE DATEDIFF(month,d1.Date_Of_Discharge,GETDATE()) = 1
AND DATEDIFF(year,d1.Date_Of_Discharge,GETDATE()) = 0

--76.Display the in patient details who visited DR. Ram for the treatment 'Chronic treatment'

SELECT d1.Patient_Id AS [PAT_ID],


d1.Patient_Name AS [PAT_NAME],
d4.Doctor_Name AS [DOC_NAME],
d3.Treatment AS [DOC_TREAT]
FROM dbo.PATIENTS_MASTER d1
JOIN dbo.FEES_IN_PATIENTS d2
ON d1.Patient_Id = d2.Patient_Id
JOIN dbo.PATIENTS_DETAILS d3
ON d2.Patient_Id = d3.Patient_Id
JOIN dbo.DOCTORMASTER d4
ON d4.DoctorId = d2.Doctor_Id
WHERE d4.Doctor_Name = 'RAM' AND d3.Treatment = 'Chronic'

--77.Find out the average total amount paid by the out patients who visited DR.Raju

SELECT /*d1.Patient_Id AS [PAT_ID],


d1.Patient_Name AS [PAT_NAME],
d2.Total_Amount AS [TOTAL],
d3.DoctorId AS [DOC_ID],
d3.Doctor_NAme AS [DOC_NAME]*/
AVG(d2.Total_Amount) AS [AVG]
FROM dbo.PATIENTS_MASTER d1
JOIN dbo.FEES_OUT_PATIENTS d2
ON d1.Patient_Id = d2.Patient_Id
JOIN dbo.DOCTORMASTER d3
ON d3.DoctorId = d2.Doctor_Id
WHERE d3.Doctor_NAme = 'Ram'
--GROUP BY d3.DoctorId, d3.Doctor_NAme,d2.Total_Amount

--78.Display the patient details who visited DR.Raju for the treatment of 'Exercise and physical activity' from 1/1/2008 to
2/2/2008

SELECT d1.Patient_Id AS [PAT_ID],


d1.Patient_Name AS [PAT_NAME],
d3.Doctor_Name AS [DOC_NAME],
d2.Treatment AS [TREAT]
FROM dbo.PATIENTS_MASTER d1
JOIN dbo.PATIENTS_DETAILS d2
ON d1.Patient_Id = d2.Patient_Id
JOIN dbo.DOCTORMASTER d3
ON d3.DoctorId = d2.Doctor_Id
WHERE d3.Doctor_Name = 'rose' AND d2.Treatment = 'AZT' AND d2.Date_Of_Visit BETWEEN '1/1/2008 ' AND
'2/2/2008'

--79.Display the patient details, who dint give the phone number

SELECT *
FROM dbo.PATIENTS_MASTER d1
WHERE d1.Phone IN('')

--80.How many patients paid 10000 to 20000 for the treatment

SELECT COUNT(*) AS [COUNT]


FROM dbo.PATIENTS_DETAILS d1
JOIN dbo.FEES_IN_PATIENTS d2
ON d1.Patient_Id = d2.Patient_Id
JOIN dbo.FEES_OUT_PATIENTS d3
ON d2.Patient_Id = d3.Patient_Id
WHERE (d2.Total_Amount+d3.Total_Amount) = (SELECT (d2.Total_Amount+d3.Total_Amount)AS [TOTAL_IN_OUT]
FROM dbo.FEES_IN_PATIENTS d2 JOIN dbo.FEES_OUT_PATIENTS d3 ON d2.Patient_Id = d3.Patient_Id WHERE
(d2.Total_Amount+d3.Total_Amount) BETWEEN '10000' AND '20001')

--81.Display the patients whose age is below 20 and suffering from Psoriasis

SELECT p1.*,
p2.disease
FROM dbo.PATIENTS_MASTER p1
JOIN dbo.PATIENTS_DETAILS p2
ON p1.Patient_Id = p2.Patient_Id
WHERE p1.Age <20 AND p2.disease = 'psoriasis'

--82.Display the doctor details who celebrated their birthday with in this week
SELECT d1.*
FROM dbo.DOCTORMASTER d1
WHERE DATEPART(week,d1.Date_Of_Birth) = DATEPART(week,GETDATE())

--83.Display the Doctors details whose name contains exactly 2 letters 'A'

SELECT d1.*
FROM dbo.DOCTORMASTER d1
WHERE d1.Doctor_Name LIKE '%[a]%[a]%'

--84.Display the doctors who were born on the last date of a month

SELECT d1.*
FROM dbo.DOCTORMASTER d1
WHERE DATEPART(day,d1.Date_Of_Birth) IN (30,31,29,28)

SELECT DATEPART(weekday, GETDATE())

SELECT DATEADD(ms,-5,DATEADD(mm, DATEDIFF(m,0,GETDATE() )+1, 0))

SELECT DATEADD(month,DATEDIFF(month,0,GETDATE())+1,0)

SELECT DATEADD(ms,-5,DATEADD(mm, DATEDIFF(m,0,d1.Date_Of_Birth )+1, 0))FROM dbo.DOCTORMASTER


d1

SELECT d1.*
FROM dbo.DOCTORMASTER d1
WHERE DATEPART(day,d1.Date_Of_Birth) IN (SELECT DATEPART(day,DATEADD(ms,-5,DATEADD(mm,
DATEDIFF(m,0,d1.Date_Of_Birth )+1, 0)))AS LAST_DATE_MONTH FROM dbo.DOCTORMASTER d1)

--85.Display The Patient whose name contains more than one word

SELECT p1.*
FROM dbo.PATIENTS_MASTER p1
WHERE p1.Patient_Name LIKE '% %'

--86.Display the number of patients checked by each doctor


SELECT d1.Doctor_Id,
COUNT(*) AS [NO_OF_PATIENTS_CHECKED]
FROM dbo.Patients_Details d1
GROUP BY d1.Doctor_Id

--90.Display the doctor who checked most patients

SELECT TOP 1 COUNT(Patient_Id) AS [COUNT_OF_PATIENTS],


d1.Doctor_Id AS [DOC_ID]
FROM dbo.PATIENTS_DETAILS d1
GROUP BY d1.Doctor_Id
ORDER BY COUNT(Patient_Id) DESC

--91.Display the out patient details who paid the same fees

SELECT p.patient_name,
q.Doctor_Fees
FROM dbo.Patients_Master p
JOIN dbo.FEES_OUT_PATIENTS q
ON p.Patient_ID = q.Patient_ID
--GROUP BY q.Doctor_Fees,p.patient_name
--HAVING COUNT(q.Doctor_Fees)>1
--WHERE LEFT (q.Doctor_Fees,3) = RIGHT(q.Doctor_Fees,3)

--91.Display number of the out patient details who paid the same fees

SELECT COUNT(*) AS [PAT_SAME_AMOUNT]


FROM dbo.Patients_Master p
JOIN dbo.FEES_OUT_PATIENTS q
ON p.Patient_ID = q.Patient_ID
GROUP BY q.Doctor_Fees
HAVING COUNT(*) > 1

You might also like