From 6ed93deeafe2f0a60cda4d66df3422b4eca50288 Mon Sep 17 00:00:00 2001 From: mikirzh Date: Tue, 2 Jun 2020 14:56:26 +0500 Subject: [PATCH 1/3] =?UTF-8?q?=D0=94=D0=97=20=D0=BA=206=20=D1=83=D1=80?= =?UTF-8?q?=D0=BE=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HomeWork-Lesson6.sql | 127 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 HomeWork-Lesson6.sql diff --git a/HomeWork-Lesson6.sql b/HomeWork-Lesson6.sql new file mode 100644 index 0000000..2d9b74e --- /dev/null +++ b/HomeWork-Lesson6.sql @@ -0,0 +1,127 @@ +-- Создать все необходимые внешние ключи. Создать таблицы лайков и постов. + +ALTER TABLE profiles + ADD CONSTRAINT profiles_user_id_fk + FOREIGN KEY (user_id) REFERENCES users(id) + ON DELETE CASCADE, + ADD CONSTRAINT profiles_photo_id_fk + FOREIGN KEY (photo_id) REFERENCES media(id) + ON DELETE SET NULL; + +ALTER TABLE messages + ADD CONSTRAINT messages_from_user_id_fk + FOREIGN KEY (from_user_id) REFERENCES users(id) + ON DELETE CASCADE, + ADD CONSTRAINT messages_to_user_id_fk + FOREIGN KEY (to_user_id) REFERENCES users(id) + ON DELETE CASCADE; + +ALTER TABLE friendship + ADD CONSTRAINT friendship_user_id_fk + FOREIGN KEY (user_id) REFERENCES users(id) + ON DELETE CASCADE, + ADD CONSTRAINT friendship_friend_id_fk + FOREIGN KEY (friend_id) REFERENCES users(id) + ON DELETE CASCADE, + ADD CONSTRAINT friendship_status_id_fk + FOREIGN KEY (status_id) REFERENCES friendship_statuses(id) + ON DELETE CASCADE; + +ALTER TABLE media + ADD CONSTRAINT media_user_id_fk + FOREIGN KEY (user_id) REFERENCES users(id) + ON DELETE CASCADE, + ADD CONSTRAINT media_media_type_id_fk + FOREIGN KEY (media_type_id) REFERENCES media_types(id) + ON DELETE CASCADE; + +ALTER TABLE communities_users + ADD CONSTRAINT communities_users_community_id_fk + FOREIGN KEY (community_id) REFERENCES communities(id) + ON DELETE CASCADE, + ADD CONSTRAINT communities_users_community_user_id_fk + FOREIGN KEY (user_id) REFERENCES users(id) + ON DELETE CASCADE; + +ALTER TABLE posts + ADD CONSTRAINT posts_media_id_fk + FOREIGN KEY (media_id) REFERENCES media(id) + ON DELETE CASCADE, + ADD CONSTRAINT posts_community_id_fk + FOREIGN KEY (community_id) REFERENCES communities(id) + ON DELETE CASCADE, + ADD CONSTRAINT posts_user_id_fk + FOREIGN KEY (user_id) REFERENCES users(id) + ON DELETE CASCADE; + +ALTER TABLE likes + ADD CONSTRAINT likes_target_type_id_fk + FOREIGN KEY (target_type_id) REFERENCES target_types(id) + ON DELETE CASCADE, + ADD CONSTRAINT likes_user_id_fk + FOREIGN KEY (user_id) REFERENCES users(id) + ON DELETE CASCADE; + + + + + + + + + +-- Подсчитать общее количество лайков, которые получили 10 самых молодых пользователей. + +SELECT * FROM target_types; + +SELECT * FROM profiles ORDER BY birthday DESC LIMIT 10; + +SELECT + (SELECT COUNT(*) FROM likes WHERE target_id = profiles.user_id AND target_type_id = 2) AS likes_total + FROM profiles + ORDER BY birthday + ; + +SELECT SUM(likes_total) FROM + (SELECT + (SELECT COUNT(*) FROM likes WHERE target_id = profiles.user_id AND target_type_id = 2) AS likes_total + FROM profiles + ORDER BY birthday + DESC LIMIT 10) AS user_likes +; + + + + + + + + +-- Определить кто больше поставил лайков (всего) - мужчины или женщины? + +SELECT + (SELECT gender FROM profiles WHERE user_id = likes.user_id) AS gender + FROM likes; + +SELECT + (SELECT gender FROM profiles WHERE user_id = likes.user_id) AS gender, + COUNT(*) AS total + FROM likes + GROUP BY gender + ORDER BY total DESC + LIMIT 1; + + + + + +-- Найти 10 пользователей, которые проявляют наименьшую активность в использовании социальной сети. + +SELECT + CONCAT(first_name, ' ', last_name) AS user, + (SELECT COUNT(*) FROM likes WHERE likes.user_id = users.id) + + (SELECT COUNT(*) FROM media WHERE media.user_id = users.id) + + (SELECT COUNT(*) FROM messages WHERE messages.from_user_id = users.id) AS overall_activity + FROM users + ORDER BY overall_activity + LIMIT 10; \ No newline at end of file From 16182f27941354c607e4480e1631289b7985015d Mon Sep 17 00:00:00 2001 From: mikirzh Date: Tue, 2 Jun 2020 15:06:39 +0500 Subject: [PATCH 2/3] =?UTF-8?q?=D0=94=D0=97=20=D0=BA=20=D0=A3=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HomeWork-Lesson6.sql | 127 ------------------------------------------- 1 file changed, 127 deletions(-) delete mode 100644 HomeWork-Lesson6.sql diff --git a/HomeWork-Lesson6.sql b/HomeWork-Lesson6.sql deleted file mode 100644 index 2d9b74e..0000000 --- a/HomeWork-Lesson6.sql +++ /dev/null @@ -1,127 +0,0 @@ --- Создать все необходимые внешние ключи. Создать таблицы лайков и постов. - -ALTER TABLE profiles - ADD CONSTRAINT profiles_user_id_fk - FOREIGN KEY (user_id) REFERENCES users(id) - ON DELETE CASCADE, - ADD CONSTRAINT profiles_photo_id_fk - FOREIGN KEY (photo_id) REFERENCES media(id) - ON DELETE SET NULL; - -ALTER TABLE messages - ADD CONSTRAINT messages_from_user_id_fk - FOREIGN KEY (from_user_id) REFERENCES users(id) - ON DELETE CASCADE, - ADD CONSTRAINT messages_to_user_id_fk - FOREIGN KEY (to_user_id) REFERENCES users(id) - ON DELETE CASCADE; - -ALTER TABLE friendship - ADD CONSTRAINT friendship_user_id_fk - FOREIGN KEY (user_id) REFERENCES users(id) - ON DELETE CASCADE, - ADD CONSTRAINT friendship_friend_id_fk - FOREIGN KEY (friend_id) REFERENCES users(id) - ON DELETE CASCADE, - ADD CONSTRAINT friendship_status_id_fk - FOREIGN KEY (status_id) REFERENCES friendship_statuses(id) - ON DELETE CASCADE; - -ALTER TABLE media - ADD CONSTRAINT media_user_id_fk - FOREIGN KEY (user_id) REFERENCES users(id) - ON DELETE CASCADE, - ADD CONSTRAINT media_media_type_id_fk - FOREIGN KEY (media_type_id) REFERENCES media_types(id) - ON DELETE CASCADE; - -ALTER TABLE communities_users - ADD CONSTRAINT communities_users_community_id_fk - FOREIGN KEY (community_id) REFERENCES communities(id) - ON DELETE CASCADE, - ADD CONSTRAINT communities_users_community_user_id_fk - FOREIGN KEY (user_id) REFERENCES users(id) - ON DELETE CASCADE; - -ALTER TABLE posts - ADD CONSTRAINT posts_media_id_fk - FOREIGN KEY (media_id) REFERENCES media(id) - ON DELETE CASCADE, - ADD CONSTRAINT posts_community_id_fk - FOREIGN KEY (community_id) REFERENCES communities(id) - ON DELETE CASCADE, - ADD CONSTRAINT posts_user_id_fk - FOREIGN KEY (user_id) REFERENCES users(id) - ON DELETE CASCADE; - -ALTER TABLE likes - ADD CONSTRAINT likes_target_type_id_fk - FOREIGN KEY (target_type_id) REFERENCES target_types(id) - ON DELETE CASCADE, - ADD CONSTRAINT likes_user_id_fk - FOREIGN KEY (user_id) REFERENCES users(id) - ON DELETE CASCADE; - - - - - - - - - --- Подсчитать общее количество лайков, которые получили 10 самых молодых пользователей. - -SELECT * FROM target_types; - -SELECT * FROM profiles ORDER BY birthday DESC LIMIT 10; - -SELECT - (SELECT COUNT(*) FROM likes WHERE target_id = profiles.user_id AND target_type_id = 2) AS likes_total - FROM profiles - ORDER BY birthday - ; - -SELECT SUM(likes_total) FROM - (SELECT - (SELECT COUNT(*) FROM likes WHERE target_id = profiles.user_id AND target_type_id = 2) AS likes_total - FROM profiles - ORDER BY birthday - DESC LIMIT 10) AS user_likes -; - - - - - - - - --- Определить кто больше поставил лайков (всего) - мужчины или женщины? - -SELECT - (SELECT gender FROM profiles WHERE user_id = likes.user_id) AS gender - FROM likes; - -SELECT - (SELECT gender FROM profiles WHERE user_id = likes.user_id) AS gender, - COUNT(*) AS total - FROM likes - GROUP BY gender - ORDER BY total DESC - LIMIT 1; - - - - - --- Найти 10 пользователей, которые проявляют наименьшую активность в использовании социальной сети. - -SELECT - CONCAT(first_name, ' ', last_name) AS user, - (SELECT COUNT(*) FROM likes WHERE likes.user_id = users.id) + - (SELECT COUNT(*) FROM media WHERE media.user_id = users.id) + - (SELECT COUNT(*) FROM messages WHERE messages.from_user_id = users.id) AS overall_activity - FROM users - ORDER BY overall_activity - LIMIT 10; \ No newline at end of file From ba13eba7ef4e8f60399fdbdebb8a8b5aba48ab25 Mon Sep 17 00:00:00 2001 From: mikirzh Date: Tue, 2 Jun 2020 15:08:03 +0500 Subject: [PATCH 3/3] =?UTF-8?q?=D0=94=D0=97=20=D0=BA=20=D1=83=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D1=83=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HomeWork-Lesson7.sql | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 HomeWork-Lesson7.sql diff --git a/HomeWork-Lesson7.sql b/HomeWork-Lesson7.sql new file mode 100644 index 0000000..6dab437 --- /dev/null +++ b/HomeWork-Lesson7.sql @@ -0,0 +1,42 @@ +-- Составьте список пользователей users, которые осуществили хотя бы один заказ orders в интернет магазине. + +INSERT INTO orders (user_id) +SELECT id FROM users WHERE name = 'Геннадий'; + +INSERT INTO orders_products (order_id, product_id, total) +SELECT LAST_INSERT_ID(), id, 2 FROM products +WHERE name = 'Intel Core i5-7400'; + +INSERT INTO orders (user_id) +SELECT id FROM users WHERE name = 'Наталья'; + +INSERT INTO orders_products (order_id, product_id, total) +SELECT LAST_INSERT_ID(), id, 1 FROM products +WHERE name IN ('Intel Core i5-7400', 'Gigabyte H310M S2H'); + +INSERT INTO orders (user_id) +SELECT id FROM users WHERE name = 'Иван'; + +INSERT INTO orders_products (order_id, product_id, total) +SELECT LAST_INSERT_ID(), id, 1 FROM products +WHERE name IN ('AMD FX-8320', 'ASUS ROG MAXIMUS X HERO'); + +SELECT id, name, birthday_at FROM users; + +SELECT u.id, u.name, u.birthday_at + FROM users AS u + JOIN orders AS o + ON u.id = o.user_id; + + + +-- Выведите список товаров products и разделов catalogs, который соответствует товару. + +ELECT + p.id, + p.name, + p.price, + c.name AS catalog + FROM products AS p + LEFT JOIN catalogs AS c + ON p.catalog_id = c.id; \ No newline at end of file