-- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ country
CREATE TABLE country (
countryID INT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
-- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ artist
CREATE TABLE artist (
artistID INT PRIMARY KEY,
countryID INT,
surname VARCHAR(50) NOT NULL,
name VARCHAR(50) NOT NULL,
birthday DATE,
death_date DATE,
FOREIGN KEY (countryID) REFERENCES country(countryID)
);
-- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ artwork
CREATE TABLE artwork (
artworkID INT PRIMARY KEY,
artistID INT,
title VARCHAR(200) NOT NULL,
created INT,
FOREIGN KEY (artistID) REFERENCES artist(artistID)
);
-- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ exhibition
CREATE TABLE exhibition (
exhibitionID INT PRIMARY KEY,
title VARCHAR(200) NOT NULL,
date DATE,
address VARCHAR(200)
);
-- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ artwork_exhibition
CREATE TABLE artwork_exhibition (
artexhID INT PRIMARY KEY,
exhibitionID INT,
artworkID INT,
FOREIGN KEY (exhibitionID) REFERENCES exhibition(exhibitionID),
FOREIGN KEY (artworkID) REFERENCES artwork(artworkID)
);
-- ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ country
INSERT INTO country (countryID, name) VALUES
(1, 'Π ΠΎΡΡΠΈΡ'),
(2, 'Π€ΡΠ°Π½ΡΠΈΡ'),
(3, 'ΠΡΠ°Π»ΠΈΡ');
-- ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ artist
INSERT INTO artist (artistID, countryID, surname, name, birthday, death_date) VALUES
(1, 1, 'Π Π΅ΠΏΠΈΠ½', 'ΠΠ»ΡΡ', '1844-08-05', '1930-09-29'),
(2, 1, 'ΠΠ°Π½Π΄ΠΈΠ½ΡΠΊΠΈΠΉ', 'ΠΠ°ΡΠΈΠ»ΠΈΠΉ', '1866-12-16', '1944-12-13'),
(3, 2, 'ΠΠΎΠ½Π΅', 'ΠΠ»ΠΎΠ΄', '1840-11-14', '1926-12-05'),
(4, 3, 'ΠΠ° ΠΠΈΠ½ΡΠΈ', 'ΠΠ΅ΠΎΠ½Π°ΡΠ΄ΠΎ', '1452-04-15', '1519-05-02'),
(5, 3, 'Π’ΠΈΡΠΌΠ°Π½', 'Π’ΠΈΡΠ½Π°Π½ΠΎ', '1488-02-20', '1576-08-27');
-- ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ artwork
INSERT INTO artwork (artworkID, artistID, title, created) VALUES
(1, 1, 'ΠΠ²Π°Π½ ΠΡΠΎΠ·Π½ΡΠΉ ΠΈ ΡΡΠ½ Π΅Π³ΠΎ ΠΠ²Π°Π½', 1885),
(2, 1, 'ΠΠ΅ ΠΆΠ΄Π°Π»ΠΈ', 1884),
(3, 2, 'ΠΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ VIII', 1923),
(4, 2, 'Π‘ΠΈΠ½ΠΈΠΉ Π²ΡΠ°Π΄Π½ΠΈΠΊ', 1903),
(5, 2, 'Π‘ΠΈΠ½ΡΡ Π³ΠΎΡΠ°', 1908),
(6, 3, 'ΠΠ°ΠΌΠΈΠ»Π»Π°', 1866),
(7, 4, 'Π’Π°ΠΉΠ½Π°Ρ Π²Π΅ΡΠ΅ΡΡ', 1498),
(8, 4, 'ΠΠΈΡΡΡΠ²ΠΈΠ°Π½ΡΠΊΠΈΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ', 1492),
(9, 5, 'Π£ΡΠΏΠ΅Π½ΠΈΠ΅ ΠΠΎΠ³ΠΎΡΠΎΠ΄ΠΈΡΡ', 1518),
(10, 5, 'ΠΠ΅Π½Π΅ΡΠ° Π£ΡΠ±ΠΈΠ½ΡΠΊΠ°Ρ', 1538);
-- ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ exhibition
INSERT INTO exhibition (exhibitionID, title, date, address) VALUES
(1, 'Π ΡΡΡΠΊΠ°Ρ ΠΆΠΈΠ²ΠΎΠΏΠΈΡΡ', '2024-03-15', 'ΠΠΠΠ ΠΈΠΌΠ΅Π½ΠΈ ΠΡΡΠΊΠΈΠ½Π°'),
(2, 'ΠΠΏΠΎΡ
Π° ΠΠΎΠ·ΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ', '2024-06-25', 'ΠΠΎΠ²Π°Ρ Π’ΡΠ΅ΡΡΡΠΊΠΎΠ²ΠΊΠ°'),
(3, 'Π ΠΎΠΌΠ°Π½ΡΠΈΠ·ΠΌ Π² ΠΈΡΠΊΡΡΡΡΠ²Π΅', '2024-09-16', 'ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΡΠ·Π΅ΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΈΡΠΊΡΡΡΡΠ² ΠΈΠΌΠ΅Π½ΠΈ Π.Π‘. ΠΡΡΠΊΠΈΠ½Π°');
-- ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ artwork_exhibition
INSERT INTO artwork_exhibition (artexhID, exhibitionID, artworkID) VALUES
(1, 1, 1),
(2, 1, 2),
(3, 1, 3),
(4, 1, 4),
(5, 1, 5),
(6, 2, 6),
(7, 2, 7),
(8, 2, 8),
(9, 2, 9),
(10, 2, 10),
(11, 3, 3),
(12, 3, 9),
(13, 3, 10);
WITH ArtistArtworkCount AS (
SELECT
CONCAT(a.name, ' ', a.surname) AS artist_name,
COUNT(ae.artworkID) AS artwork_count
FROM
artist a
JOIN
artwork aw ON a.artistID = aw.artistID
JOIN
artwork_exhibition ae ON aw.artworkID = ae.artworkID
GROUP BY
a.name, a.surname
)
SELECT
SUM(CASE WHEN artist_name = 'ΠΠ»ΡΡ Π Π΅ΠΏΠΈΠ½' THEN artwork_count ELSE 0 END) AS "ΠΠ»ΡΡ Π Π΅ΠΏΠΈΠ½",
SUM(CASE WHEN artist_name = 'ΠΠ°ΡΠΈΠ»ΠΈΠΉ ΠΠ°Π½Π΄ΠΈΠ½ΡΠΊΠΈΠΉ' THEN artwork_count ELSE 0 END) AS "ΠΠ°ΡΠΈΠ»ΠΈΠΉ ΠΠ°Π½Π΄ΠΈΠ½ΡΠΊΠΈΠΉ",
SUM(CASE WHEN artist_name = 'ΠΠ»ΠΎΠ΄ ΠΠΎΠ½Π΅' THEN artwork_count ELSE 0 END) AS "ΠΠ»ΠΎΠ΄ ΠΠΎΠ½Π΅",
SUM(CASE WHEN artist_name = 'ΠΠ΅ΠΎΠ½Π°ΡΠ΄ΠΎ ΠΠ° ΠΠΈΠ½ΡΠΈ' THEN artwork_count ELSE 0 END) AS "ΠΠ΅ΠΎΠ½Π°ΡΠ΄ΠΎ ΠΠ° ΠΠΈΠ½ΡΠΈ",
SUM(CASE WHEN artist_name = 'Π’ΠΈΡΠΈΠ°Π½ΠΎ Π’ΠΈΡΠΈΠ°Π½' THEN artwork_count ELSE 0 END) AS "Π’ΠΈΡΠΈΠ°Π½ΠΎ Π’ΠΈΡΠΈΠ°Π½"
FROM
ArtistArtworkCount;