Как объединить результаты запроса с другим запросом - PullRequest
0 голосов
/ 28 февраля 2019
SELECT customer_trn, avg(balance) FROM 
  ( 
  SELECT depositor.customer_trn, account.account_number, account.balance FROM 
    account 
      INNER JOIN savings_account ON account.account_number = savings_account.account_number 
      INNER JOIN depositor ON depositor.account_number = account.account_number 
    UNION ALL 
  SELECT depositor.customer_trn, account.account_number, account.balance FROM 
    account 
      INNER JOIN checking_account ON account.account_number = checking_account.account_number 
      INNER JOIN depositor ON depositor.account_number = account.account_number 
  ) 
  AS subquery2 GROUP BY customer_trn ;

Приведенный выше запрос дает следующий результат.

+--------------+---------------+
| customer_trn | avg(balance)  |
+--------------+---------------+
| 125-233-001  | 252500.000000 |
| 125-233-002  |   3732.500000 |
| 125-233-004  | 480002.000000 |
| 125-233-005  |  17000.000000 |
| 125-233-006  |  17000.000000 |
| 125-233-007  |   5000.000000 |
| 125-233-008  |   5000.000000 |
+--------------+---------------+

Я пытаюсь присоединиться к этому запросу, чтобы получить имя (из таблицы ниже) вместе с первоначальными результатами.По сути, я хочу связать customer_trn (первичный ключ) в качестве общего столбца, чтобы сделать результаты таблицы более значимыми.Это будет иметь имя клиента, номер клиента и средний баланс.

CREATE TABLE customer
   (
    customer_trn   varchar(50) NOT NULL UNIQUE,
    customer_name   varchar(50) NOT NULL,
    customer_street  varchar(50)  NOT NULL,
    customer_city  varchar(50)  NOT NULL,
    PRIMARY KEY(customer_name)
    );

Так это будет выглядеть так:

+--------------+---------------+---------------+
| customer_trn | avg(balance)  |customer_name  |
+--------------+---------------+---------------+
| 125-233-001  | 252500.000000 |John           |
| 125-233-002  |   3732.500000 |Bobby          |  
| 125-233-004  | 480002.000000 |James          |
| 125-233-005  |  17000.000000 |King           |
| 125-233-006  |  17000.000000 |Raven          |
| 125-233-007  |   5000.000000 |Mark           |
| 125-233-008  |   5000.000000 |Sam            |
+--------------+---------------+---------------+ 

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

при условии, что у вас есть таблица customer с именем customer_name и идентификатором для соединения customer_trn, вы можете

SELECT t1.customer_trn, t1.cust_avg, c.username 
from (
SELECT customer_trn, avg(balance)  cust_avg
FROM 
  ( 
  SELECT depositor.customer_trn, account.account_number, account.balance 
  FROM account 
      INNER JOIN savings_account ON account.account_number = savings_account.account_number 
      INNER JOIN depositor ON depositor.account_number = account.account_number 
    UNION ALL 
   SELECT depositor.customer_trn, account.account_number, account.balance FROM 
    account 
      INNER JOIN checking_account ON account.account_number = checking_account.account_number 
      INNER JOIN depositor ON depositor.account_number = account.account_number 
  )   AS subquery2 
  GROUP BY customer_trn 

) t1 
inner join  customer ON c.id = t1.customer_trn
0 голосов
/ 28 февраля 2019

использовать объединение с таблицей клиентов и подзапросом

SELECT subquery2.customer_trn, c.customer_name   ,avg(balance) FROM 
  ( 
  SELECT depositor.customer_trn, account.account_number, account.balance FROM 
    account 
      INNER JOIN savings_account ON account.account_number = savings_account.account_number 
      INNER JOIN depositor ON depositor.account_number = account.account_number 

    UNION ALL 
  SELECT depositor.customer_trn, account.account_number, account.balance FROM 
    account 
      INNER JOIN checking_account ON account.account_number = checking_account.account_number 
      INNER JOIN depositor ON depositor.account_number = account.account_number 
  ) 
  AS subquery2 join customer c on c.customer_trn =subquery2.customer_trn 

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