-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBASIC QUERY.sql
105 lines (84 loc) · 3.74 KB
/
BASIC QUERY.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
-- 1) select the max of icd1_code in diagnosis_result
WITH Z (ICD10_CODE, MAX_ICD10) AS (SELECT ICD10_CODE, COUNT(ICD10_CODE) FROM DIAGNOSIS_RESULT GROUP BY ICD10_CODE)
SELECT ICD10_CODE, MAX_ICD10
FROM Z
WHERE MAX_ICD10 = (SELECT MAX(MAX_ICD10) FROM Z)
-- 2) select the min of icd1_code in diagnosis_result
WITH Z (ICD10_CODE, MIN_ICD10) AS (SELECT ICD10_CODE, COUNT(ICD10_CODE) FROM DIAGNOSIS_RESULT GROUP BY ICD10_CODE)
SELECT ICD10_CODE, MIN_ICD10
FROM Z
WHERE MIN_ICD10 = (SELECT MIN(MIN_ICD10) FROM Z)
-- 3) average spending of the patients
SELECT AVG(TOTAL) AS AVG_SPENDING FROM MEDICAL_BILL
-- 4) get the age of the patients
SELECT PAT_ID, NAME_TITLE, FNAME_EN, LNAME_EN, FLOOR(DATEDIFF(DAY, BIRTHDATE, Getdate()) / 365.25) AS AGE
FROM PATIENT
-- 5) get the medicines in medical_order_entry
SELECT COUNT(MED_CODE) as COUNT, MED_CODE
FROM MEDICAL_ORDER_ENTRY
GROUP BY MED_CODE
-- 6) Get the date time of the visit
SELECT VISIT_ID, PAT_ID, EMP_ID, VISIT_DATETIME
FROM VISIT
-- 7) find accumulate price classify Payment_type: cash
SELECT SUM(TOTAL) as TOTAL_PRICE
FROM RECEIPT
WHERE PAYMENT_TYPE LIKE '%Cash%'
-- 8) find accumulate price classify Payment_type: credit card
SELECT SUM(TOTAL) as TOTAL_PRICE
FROM RECEIPT
WHERE PAYMENT_TYPE LIKE '%Credit card%'
-- 9) find the maximum price from 2 payment_types
WITH Z (PAYMENT_TYPE, TOTAL_SUM) as (SELECT PAYMENT_TYPE, SUM(TOTAL) FROM RECEIPT GROUP BY PAYMENT_TYPE)
SELECT TOTAL_SUM, PAYMENT_TYPE
FROM Z
WHERE TOTAL_SUM = (SELECT MAX(TOTAL_SUM) FROM Z)
-- 10) get the maximum number of medicines
WITH Z (MED_CODE, MED_COUNT) AS (SELECT MED_CODE, COUNT(MED_CODE) FROM MEDICAL_ORDER_ENTRY GROUP BY MED_CODE)
SELECT MED_CODE, MED_COUNT
FROM Z
WHERE MED_COUNT = (SELECT MAX(MED_COUNT) FROM Z)
-- 11) get thhe minimum number of medicines
WITH Z (MED_CODE, MED_COUNT) AS (SELECT MED_CODE, COUNT(MED_CODE) FROM MEDICAL_ORDER_ENTRY GROUP BY MED_CODE)
SELECT MED_CODE, MED_COUNT
FROM Z
WHERE MED_COUNT = (SELECT MIN(MED_COUNT) FROM Z)
-- 12) classify children
CREATE VIEW Children AS
SELECT PAT_ID, NAME_TITLE, FNAME_EN, LNAME_EN, FLOOR(DATEDIFF(DAY, BIRTHDATE, Getdate()) / 365.25) AS AGE
FROM PATIENT
WHERE FLOOR(DATEDIFF(DAY, BIRTHDATE, Getdate()) / 365.25) < 13
SELECT * FROM Children
-- 13) classify teenager
CREATE VIEW Teen AS
SELECT PAT_ID, NAME_TITLE, FNAME_EN, LNAME_EN, FLOOR(DATEDIFF(DAY, BIRTHDATE, Getdate()) / 365.25) AS AGE
FROM PATIENT
WHERE FLOOR(DATEDIFF(DAY, BIRTHDATE, Getdate()) / 365.25) BETWEEN 13 AND 19
SELECT * FROM Teen
-- 14) classify as adults
CREATE VIEW Adult AS
SELECT PAT_ID, NAME_TITLE, FNAME_EN, LNAME_EN, FLOOR(DATEDIFF(DAY, BIRTHDATE, Getdate()) / 365.25) AS AGE
FROM PATIENT
WHERE FLOOR(DATEDIFF(DAY, BIRTHDATE, Getdate()) / 365.25) BETWEEN 20 AND 59
SELECT * FROM Adult
-- 15) classify as elder
CREATE VIEW Elder AS
SELECT PAT_ID, NAME_TITLE, FNAME_EN, LNAME_EN, FLOOR(DATEDIFF(DAY, BIRTHDATE, Getdate()) / 365.25) AS AGE
FROM PATIENT
WHERE FLOOR(DATEDIFF(DAY, BIRTHDATE, Getdate()) / 365.25) > 59
SELECT * FROM Elder
-- 16) which clinic has the max number of doctor
WITH Z (CLINIC_ID, NUM_CLINIC) AS (SELECT CLINIC_ID, COUNT(CLINIC_ID) FROM DOCTOR GROUP BY CLINIC_ID)
SELECT CLINIC_ID, NUM_CLINIC
FROM Z
WHERE NUM_CLINIC = (SELECT MAX(NUM_CLINIC) FROM Z)
-- 17) which clinic has the least number of doctor
WITH Z (CLINIC_ID, NUM_CLINIC) AS (SELECT CLINIC_ID, COUNT(CLINIC_ID) FROM DOCTOR GROUP BY CLINIC_ID)
SELECT CLINIC_ID, NUM_CLINIC
FROM Z
WHERE NUM_CLINIC = (SELECT MIN(NUM_CLINIC) FROM Z)
-- 18) CLINIC HAVE HOW MANY DOCTOR
WITH Z (CLINIC_ID, NUM_CLINIC) AS (SELECT CLINIC_ID, COUNT(CLINIC_ID) FROM DOCTOR GROUP BY CLINIC_ID)
SELECT CLINIC_ID, NUM_CLINIC
FROM Z
ORDER BY NUM_CLINIC ASC