У меня есть БОЛЬШОЙ:
| name |surname| date_of_birth |hospital| op_id | op_date | medical_branch |
|++++++|+++++++|+++++++++++++++|++++++++|+++++++|+++++++++|++++++++++++++++|
| | | | | | | |
Это таблица с записями медицинских операций примерно в 500 больницах за год. Около 300 миллионов строк.
Мой вопрос:
В каждой больнице X сколько детей родилось и скольким из них была оказана реанимация сразу (в тот же день) после рождения в той же больнице?
Например, в больнице А родилось 100 детей, и 20 из них были доставлены в реанимацию в один и тот же день в той же больнице.
P619920 – это идентификатор операции для рождения. Для рождения записывается идентификатор матери, а не ребенка.
I552015 — идентификатор операции для интенсивной терапии. Записывается информация об идентификаторе ребенка.
Во-первых, я изолировал больницу А:
create table hospital_A as ( select * from BIGTABLE where hospital = 'A' )
Шаблон Hospital_A выглядит так:
| name |surname| date_of_birth|hospital| op_id | op_date | medical_branch |
|+++++++|+++++++|++++++++++++++|++++++++|+++++++|+++++++++++|+++++++++++++++++ |
| Mary | White | 01.02.1981 | A |P619920| 09.12.2011| Gynecology |
| John | White | 09.12.2011 | A |I552015| 09.12.2011|Infantile diseases|
Я пытался соответствовать:
а) фамилии ребенка и матери
б) даты операции.
select distinct
t.name
,t.surname
,t.op_date
,t.op_id
,t.medical_branch
,v.name
,v.surname
--,v.op_id
,v.medical_branch
,v.date_of_birth
,v.hospital
from hospital_A t, hospital_A v
where t.op_date=v.date_of_birth
and t.surname=v.surname
and t.op_id = 'P619920'
and v.op_id = 'I552015'
Это дало мне 20 строк.
Но когда я применяю тот же запрос к BIFTABLE, для больницы А имеется 81 строка.
Я понимаю, что эта разница связана с детьми, которые родились в других больницах, но были доставлены в больницу А в тот же день для интенсивной терапии.
В BIGTABLE шаблон выглядит так:
| name |surname|date_of_birth|hospital| op_id | op_date | medical_branch |
|+++++++|+++++++|+++++++++++++|++++++++|+++++++++|++++++++++|++++++++++++++++++|
| Mary | White | 01.02.1981 | A | P619920 |09.10.2011| Gynecology |
| John | White | 09.10.2011 | A | I552015 |09.10.2011|Infantile diseases|
| Ellen | Young | 04.09.1978 | B | P619920 |07.12.2011| Gynecology |
| Robert| Young | 07.12.2011 | A | I552015 |07.12.2011|Infantile diseases|
Таким образом, результаты таблицы BIGTABLE отличаются от результатов изолированной таблицы Hospital_A, так как она содержит Hospital B.
Мой запрос для BIGTABLE должен извлечь комбинацию родов в тот же день и интенсивной терапии, которая произошла в той же больнице.
Результирующая таблица:
| hospital | total births | intensive_care_babies |
|----------|--------------|-----------------------|
| A | 100 | 20 |
| B | ... | .. |