# SQL 教學
## 1
```
SELECT *
FROM mimiciv_hosp.patients;
```
## 2
```
SELECT COUNT(*)
FROM mimiciv_hosp.patients;
```
## 3
```
SELECT DISTINCT(gender)
FROM mimiciv_hosp.patients;
```
## 4
```
SELECT COUNT(*)
FROM mimiciv_hosp.patients
WHERE gender = 'F';
```
## 5
```
SELECT gender, COUNT(*)
FROM mimiciv_hosp.patients
GROUP BY gender;
```
## 6
```
SELECT p.subject_id, p.dob, a.hadm_id,
a.admittime, p.expire_flag
FROM mimiciv_hosp.admissions a
INNER JOIN mimiciv_hosp.patients p
ON p.subject_id = a.subject_id;
```
## 7
```
SELECT p.subject_id, p.dob, a.hadm_id,
a.admittime, p.expire_flag,
MIN (a.admittime) OVER (PARTITION BY p.subject_id) AS first_admittime
FROM mimiciv_hosp.admissions a
INNER JOIN mimiciv_hosp.patients p
ON p.subject_id = a.subject_id
ORDER BY a.hadm_id, p.subject_id;
```
## 8
```
WITH first_admission_time AS
(
SELECT
p.subject_id, p.dob, p.gender
, MIN (a.admittime) AS first_admittime
, MIN( ROUND( (cast(admittime as date) - cast(dob as date)) / 365.242,2) )
AS first_admit_age
FROM mimiciv_hosp.patients p
INNER JOIN mimiciv_hosp.admissions a
ON p.subject_id = a.subject_id
GROUP BY p.subject_id, p.dob, p.gender
ORDER BY p.subject_id
)
SELECT
subject_id, dob, gender
, first_admittime, first_admit_age
, CASE
-- all ages > 89 in the database were replaced with 300
WHEN first_admit_age > 89
then '>89'
WHEN first_admit_age >= 14
THEN 'adult'
WHEN first_admit_age <= 1
THEN 'neonate'
ELSE 'middle'
END AS age_group
FROM first_admission_time
ORDER BY subject_id
```
## 9 實作
```
找到labevents的測量項目 (labevents and d_labitems),限制搜尋100筆
```
## 10 實作
```
1. icu patients的年紀,從patients和icustays的年紀
2. 區分三種情況,小於65歲 (adult),65到89 (old),等於91 (>89)
3. 計算三種情況的人術
```
Reference: https://mimic.mit.edu/docs/iii/tutorials/intro-to-mimic-iii/