-- CREATE TABLE A(
-- ID SERIAL PRIMARY KEY,
-- LastName VARCHAR(20)
-- );
-- INSERT INTO A (LastName)
-- VALUES
-- ('ΠΠ²Π°Π½ΠΎΠ²'),
-- ('ΠΠ΅ΡΡΠΎΠ²'),
-- ('Π‘ΠΈΠ΄ΠΎΠ²ΠΎΠ²');
-- select * from A;
-- CREATE TABLE B(
-- ID INT PRIMARY KEY,
-- Age INT
-- );
-- INSERT INTO B (ID, Age)
-- VALUES
-- (1, 45),
-- (2, 27),
-- (3, 32);
-- SELECT * FROM B;
-- -- 1.ΠΡΠ³ΡΡΠ·ΠΈΡΠ΅ ΡΠ°ΠΌΠΈΠ»ΠΈΡ ΠΈ Π²ΠΎΠ·ΡΠ°ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ JOIN, ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΠ°Π±Π»ΠΈΡ:
-- SELECT
-- a.LastName,
-- b.Age
-- FROM
-- A
-- JOIN
-- B b ON a.ID = b.ID;
-- -- 2.Π ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠ΅ΠΉΡΡ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ· Π·Π°Π΄Π°Π½ΠΈΡ 1, Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠ³ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°
-- SELECT
-- a.LastName,
-- b.Age
-- FROM
-- A a
-- JOIN
-- B b ON a.ID = b.ID
-- ORDER BY
-- b.Age ASC
-- LIMIT 1;
-- Π’Π°Π±Π»ΠΈΡΠ° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
-- CREATE TABLE A (
-- ID INT PRIMARY KEY,
-- Client VARCHAR(50)
-- );
-- INSERT INTO A (ID, Client) VALUES
-- (1, 'Bank 1'),
-- (2, 'Bank 2'),
-- (3, 'Bank 3'),
-- (4, 'Bank 4'),
-- (5, 'Bank 5'),
-- (6, 'Bank 6');
-- SELECT * FROM A;
-- -- Π’Π°Π±Π»ΠΈΡΠ° ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ
-- CREATE TABLE B(
-- ID INT,
-- Payment INT
-- );
-- INSERT INTO B (ID, Payment) VALUES
-- (1, 3000),
-- (2, 1000),
-- (2, 5000),
-- (3, 2500),
-- (5, 2000),
-- (5, 1500);
-- SELECT * FROM B;
-- -- Π’Π°Π±Π»ΠΈΡΠ° Π·Π°ΠΊΡΡΡΠΈΡ ΡΡΠ΅ΡΠΎΠ²
-- CREATE TABLE C (
-- ID INT,
-- End_date DATE
-- );
-- INSERT INTO C (ID, End_date) VALUES
-- (1, NULL),
-- (2, '2016-05-21'),
-- (3, '2002-01-11'),
-- (4, NULL),
-- (5, NULL),
-- (6, '2008-03-01');
-- SELECT * FROM C;
-- -- 3.ΠΡΠ³ΡΡΠ·ΠΈΡΠ΅ ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΡΠΌΠΌΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ ΠΏΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ,
-- -- ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΊΡΡΠ»ΠΈ ΡΠ²ΠΎΠΈ ΡΡΠ΅ΡΠ°:
-- SELECT
-- a.Client,
-- (SUM(b.Payment)) AS Total_Paymants
-- FROM
-- A a
-- JOIN
-- B b ON a.ID = b.ID
-- JOIN
-- C c ON a.ID = c.ID
-- WHERE
-- c.End_date IS NOT NULL
-- GROUP BY
-- a.Client;
-- -- 4.ΠΡΠ³ΡΡΠ·ΠΈΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΡΠΌΠΌΡ Π²ΡΠ΅Ρ
ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
-- SELECT
-- a.Client,
-- (SUM(b.Payment)) AS Total_paymants
-- FROM
-- A a
-- JOIN
-- B b ON a.ID = b.ID
-- GROUP BY
-- a.Client
-- ORDER BY
-- a.Client ASC;
-- CREATE TABLE A (
-- ID INT PRIMARY KEY,
-- Client VARCHAR(50)
-- );
-- INSERT INTO A (ID, Client)
-- VALUES
-- (1, 'Bank 1'),
-- (2, 'Bank 2'),
-- (4, 'Bank 4'),
-- (6, 'Bank 6');
-- SELECT * FROM A;
-- CREATE TABLE B (
-- ID INT PRIMARY KEY,
-- Payments INT
-- );
-- INSERT INTO B (ID, Payments)
-- VALUES
-- (1, 3000),
-- (2, 1000),
-- (3, 2000),
-- (4, 4000),
-- (5, 5000);
-- SELECT * FROM B;
-- SELECT A.Client, B.Payments FROM A LEFT JOIN B ON A.ID=B.ID
-- SELECT A.Client, B.Payments FROM A RIGHT JOIN B ON A.ID=B.ID
-- SELECT A.Client, B.Payments FROM A INNER JOIN B ON A.ID=B.ID
-- SELECT A.Client, B.Payments FROM A FULL JOIN B ON A.ID=B.ID
CREATE TABLE A (
ID SERIAL PRIMARY KEY,
Client VARCHAR(50)
);
INSERT INTO A (Client)
VALUES
('Bank 1'),
('Bank 2'),
('Bank 3'),
('Bank 4'),
('Bank 5'),
('Bank 6');
SELECT * FROM A;
CREATE TABLE B (
ID INT,
Pay_id INT,
Payments INT
);
INSERT INTO B (ID, Pay_id, Payments)
VALUES
(1, 1, 3000),
(1, 3, 1000),
(2, 4, 5000),
(3, 5, 2500),
(2, 7, 2000),
(5, 2, 1500);
SELECT * FROM B;
CREATE TABLE E (
Pay_id INT,
Purpose TEXT
);
INSERT INTO E (Pay_id, Purpose)
VALUES
(1, 'ΠΠΎΠ³Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΡ β346859'),
(2, 'Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ Π½Π° ΠΎΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΡΠ»ΡΠ³ β8'),
(3, 'ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅, ΠΎΠΏΠ»Π°ΡΠ° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ°'),
(4, 'Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΈΠΈ β15699'),
(5, 'ΠΏΠΎΠ³Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΠΎΠ³ΠΎΠ²ΠΎΡΡ β7456426'),
(7, 'ΠΏΠΎΠ³Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΡ β49516426');
SELECT * FROM E;
-- 6. ΠΡΠ³ΡΡΠ·ΠΈΡΠ΅ ΡΡΠΌΠΌΡ ΠΏΠ»Π°ΡΠ΅ΠΆΠ΅ΠΉ ΠΏΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ,
-- Π³Π΄Π΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆΠ° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΠΎ ΡΠ»ΠΎΠ²Π° Β«Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΒ»
SELECT
a.Client,
(SUM(b.Payments)) AS Total_payments,
e.Purpose
FROM
A a
JOIN
B b ON a.ID = b.ID
JOIN
E e ON e.Pay_id = a.ID
WHERE
e.Purpose LIKE 'Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ%'
GROUP BY
a.Client, e.Purpose;