Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Суммирование полей запросов  [new]
Oda412
Member

Откуда:
Сообщений: 51
Здравствуйте!
В наличии результаты двух запросов:

Запрос 1:
fio sum_f2
-------------------------
Petrov 100

Запрос 2:
fio sum_f3
-------------------------
Pertov 30
Smirnov 185
Ivanov 138

Задача - сложить эти 2 запроса между собой, чтобы получилось так:

fio sum
-------------------------
Petrov 130
Smirnov 185
Ivanov 138

Помогите, пожалуйста

Исходный код здесь:
CREATE TABLE t1(id SERIAL PRIMARY KEY,
			 fio VARCHAR);

CREATE TABLE t2(id INTEGER NOT NULL REFERENCES t1(id),
			 f2 DOUBLE PRECISION);
			
CREATE TABLE t3(id INTEGER NOT NULL REFERENCES t1(id),
			 f3 DOUBLE PRECISION); 

-- Ввод данных

INSERT INTO t1(id,fio) VALUES (1,'Petrov');
INSERT INTO t1(id,fio) VALUES (2,'Ivanov');
INSERT INTO t1(id,fio) VALUES (3,'Smirnov');

INSERT INTO t2(id,f2) VALUES (1,100);

INSERT INTO t3(id,f3) VALUES(1,30);
INSERT INTO t3(id,f3) VALUES(2,55);
INSERT INTO t3(id,f3) VALUES(2,38);
INSERT INTO t3(id,f3) VALUES(2,45);
INSERT INTO t3(id,f3) VALUES(3,55);
INSERT INTO t3(id,f3) VALUES(3,45);
INSERT INTO t3(id,f3) VALUES(3,85);

-- Запрос 1
SELECT 
	fio,
	SUM(f2) as sum_f2
FROM t1	
INNER JOIN t2 ON t1.id=t2.id
GROUP BY fio;	

-- Запрос 2

SELECT 
	fio,
	SUM(f3) as sum_f3
FROM t1	
INNER JOIN t3 ON t1.id=t3.id
GROUP BY fio;


Сообщение было отредактировано: 18 ноя 21, 13:52
18 ноя 21, 13:42    [22397470]     Ответить | Цитировать Сообщить модератору
 Re: Суммирование полей запросов  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4449
Что-то типа такого (не тестировал)

SELECT fio,SUM(sum_ff) FROM 	
(SELECT fio,SUM(f2) as sum_ff FROM t1 INNER JOIN t2 ON t1.id=t2.id GROUP BY fio) t11
inner join
(SELECT fio, SUM(f3) as sum_ff FROM t1 INNER JOIN t3 ON t1.id=t3.id GROUP BY fio) t22
ON t11.fio=t22.fio
18 ноя 21, 14:16    [22397499]     Ответить | Цитировать Сообщить модератору
 Re: Суммирование полей запросов  [new]
Guzya
Member

Откуда:
Сообщений: 818
select t1.id,t1.fio,sum_total from t1 left join (select id, sum(s1) as sum_total from (select id,sum(f2) as s1 from t2 group by id    
union all                                                                    
select id,sum(f3) as s1 from t3 group by id) as table_sum(id,s1) group by id) as t4 on t4.id=t1.id;



id | fio | sum_total
----+---------+-----------
1 | Petrov | 130
2 | Ivanov | 138
3 | Smirnov | 185

18 ноя 21, 15:08    [22397532]     Ответить | Цитировать Сообщить модератору
 Re: Суммирование полей запросов  [new]
Oda412
Member

Откуда:
Сообщений: 51
Ролг Хупин, направление мысли понятно, спасибо большое!!
18 ноя 21, 15:30    [22397550]     Ответить | Цитировать Сообщить модератору
 Re: Суммирование полей запросов  [new]
Oda412
Member

Откуда:
Сообщений: 51
Guzya, спасибо большое за решение!!
18 ноя 21, 15:30    [22397551]     Ответить | Цитировать Сообщить модератору
 Re: Суммирование полей запросов  [new]
Цед Зип
Member [заблокирован]

Откуда: Геленджык
Сообщений: 2
Oda412
Ролг Хупин, направление мысли понятно, спасибо большое!!


;-) вы и сами могли дойти до решения
18 ноя 21, 18:34    [22397667]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить