SELECT a.column1, b.column2, ...
FROM table1 a
JOIN table2 b ON a.common_field = b.common_field
WHERE condition;
SELECT di.subject_id, di.icd_code, d.long_title
FROM diagnoses_icd di
JOIN d_icd_diagnoses d ON di.icd_code = d.icd_code
WHERE di.subject_id = 10000032;
SELECT COUNT(*), AVG(column), SUM(column),
MIN(column), MAX(column)
FROM table_name
WHERE condition
GROUP BY column;
SELECT first_careunit, COUNT(*)
FROM icustays
GROUP BY first_careunit
ORDER BY COUNT(*) DESC;
2.3 分组和过滤(GROUP BY 和 HAVING)分组用于将数据按一个或多个列进行分组,然后对每组数据进行聚合操作。HAVING 子句用于对分组后的结果进行过滤。语法格式为:
SELECT column1, COUNT(*)
FROM table_name
WHERE condition
GROUP BY column1
HAVING COUNT(*) > value;
SELECT subject_id, COUNT(*) AS num_admissions,
SUM(dischtime - admittime) AS total_stay
FROM admissions
WHERE EXTRACT(YEAR FROM admittime) = 2018
GROUP BY subject_id
HAVING SUM(dischtime - admittime) > INTERVAL '10
days';
SELECT column1, column2, ...
FROM (SELECT column1, column2, ...
FROM
table_name
WHERE
condition) AS subquery;
SELECT icd_code, patient_count
FROM (
SELECT
icd_code, COUNT(DISTINCT subject_id) AS patient_count
FROM
diagnoses_icd
GROUP BY
icd_code
) AS diagnosis_counts
ORDER BY patient_count DESC;
MIMIC官网:https://mimic.mit.edu/
PostgreSQL Documentation:https://www.postgresql.org/docs/