Объединяйте и объединяйте таблицы, чтобы получить общие строки в указанном столбце c вместе в Postgres - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть пара таблиц в базе данных Postgres. Я присоединился и объединяет таблицы. Тем не менее, я хотел бы, чтобы общие значения в указанном столбце c отображались вместе в итоговой таблице (В конце я хотел бы выполнить групповое вычисление и вычисление максимального значения в таблице).

Схема тестовых таблиц выглядит следующим образом:

Схема (PostgreSQL v11)

CREATE TABLE table1 (

  id CHARACTER VARYING NOT NULL,
  seq CHARACTER VARYING NOT NULL

);

INSERT INTO table1 (id, seq) VALUES 
  ('UA502', 'abcdef'), ('UA503', 'ghijk'),('UA504', 'lmnop')
;

CREATE TABLE table2 (

  id CHARACTER VARYING NOT NULL,
  score FLOAT

);

INSERT INTO table2 (id, score) VALUES 
  ('UA502', 2.2), ('UA503', 2.6),('UA504', 2.8)
;


CREATE TABLE table3 (

  id CHARACTER VARYING NOT NULL,
  seq CHARACTER VARYING NOT NULL

);

INSERT INTO table3 (id, seq) VALUES 
  ('UA502', 'qrst'), ('UA503', 'uvwx'),('UA504', 'yzab')
;

CREATE TABLE table4 (

  id CHARACTER VARYING NOT NULL,
  score FLOAT

);

INSERT INTO table4 (id, score) VALUES 
  ('UA502', 8.2), ('UA503', 8.6),('UA504', 8.8);

;

Я выполнил объединение и объединение и операции таблиц, чтобы получить нужные столбцы.

Запрос # 1

SELECT table1.id, table1.seq, table2.score
    FROM table1 INNER JOIN table2 ON table1.id = table2.id

UNION 

SELECT table3.id, table3.seq, table4.score
    FROM table3 INNER JOIN table4 ON table3.id = table4.id

;

Вывод выглядит так:

| id    | seq    | score |
| ----- | ------ | ----- |
| UA502 | qrst   | 8.2   |
| UA502 | abcdef | 2.2   |
| UA504 | yzab   | 8.8   |
| UA503 | uvwx   | 8.6   |
| UA504 | lmnop  | 2.8   |
| UA503 | ghijk  | 2.6   |

Однако желаемый вывод должен быть:

| id    | seq    | score |
| ----- | ------ | ----- |
| UA502 | qrst   | 8.2   |
| UA502 | abcdef | 2.2   |
| UA504 | yzab   | 8.8   |
| UA504 | lmnop  | 2.8   |
| UA503 | uvwx   | 8.6   |
| UA503 | ghijk  | 2.6   |

Просмотр базы данных Fiddle

Как мне изменить запрос, чтобы получить желаемый результат?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...