Как получить минимальную и максимальную дату в базе данных для каждого предмета - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть psotgre sql db, в котором есть 4 таблицы, а в каждой таблице есть столбец даты.

Таблица 1

person_id       meas_date

  1            2007/02/11
  2            2008/05/13  
  3            2008/07/29
  5            2006/03/21

Таблица 2

person_id     visit_date

  1            2003/06/21
  2            2005/02/23  
  3            2006/04/19
  5            2004/06/11

Таблица 3

person_id     condition_date

  1            2008/06/21
  2            2009/02/23  
  3            2005/04/19
  5            2002/06/11

Таблица 4

person_id       d_date

  1            2018/06/21
  2            2005/02/23  
  3            2004/04/19
  5            2009/06/11

В настоящее время я делаю что-то вроде ниже, чтобы найти его из одной таблицы, но как мне найти по всем таблицам в моей БД. В данном случае это 4 таблицы

select 
  person_id,
  min(condition_start_date) as min_date,
  max(condition_start_date) as max_data,
from Table_3
group by person_id

Но не могли бы вы помочь мне найти во всех таблицах тему / person_id?

Я ожидаю, что мой результат будет ниже

person_id       max_date      min_date

  1            2018/06/21    2003/06/21
  2            2009/02/23    2005/02/23
  3            2006/04/19    2004/04/19
  5            2009/06/11    2002/06/11

1 Ответ

1 голос
/ 26 февраля 2020

Использование union all и агрегация:

select person_id, min(date), max(date)
from ((select person_id, date from table1) union all
      (select person_id, date from table2) union all
      (select person_id, date from table3) union all
      (select person_id, date from table4) 
     ) pd
group by person_id;
...