CREATE TABLE Users (
user_id INT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
join_date DATE NOT NULL,
subscription_type VARCHAR(20) NOT NULL CHECK (subscription_type IN ('Free', 'Basic', 'Premium'))
);
CREATE TABLE Movies (
movie_id INT PRIMARY KEY,
title VARCHAR(255) NOT NULL,
release_year YEAR NOT NULL,
genre VARCHAR(100) NOT NULL,
rating DECIMAL(3,1) CHECK (rating BETWEEN 0.0 AND 10.0)
);
CREATE TABLE WatchHistory (
history_id INT PRIMARY KEY,
user_id INT,
movie_id INT,
watch_date DATETIME NOT NULL,
watched_duration INT NOT NULL CHECK (watched_duration >= 0),
FOREIGN KEY (user_id) REFERENCES Users(user_id) ON DELETE CASCADE,
FOREIGN KEY (movie_id) REFERENCES Movies(movie_id) ON DELETE CASCADE
);
-- Insert into Users
INSERT INTO Users (user_id, name, email, join_date, subscription_type) VALUES
(1, 'Alice Johnson', 'alice@example.com', '2023-06-15', 'Premium'),
(2, 'Bob Smith', 'bob@example.com', '2023-07-20', 'Basic'),
(3, 'Charlie Davis', 'charlie@example.com', '2023-08-10', 'Free');
-- Insert into Movies
INSERT INTO Movies (movie_id, title, release_year, genre, rating) VALUES
(1, 'Inception', 2010, 'Sci-Fi', 8.8),
(2, 'The Matrix', 1999, 'Action', 8.7),
(3, 'Interstellar', 2014, 'Sci-Fi', 8.6);
-- Insert into WatchHistory
INSERT INTO WatchHistory (history_id, user_id, movie_id, watch_date, watched_duration) VALUES
(1, 1, 1, '2024-01-10 15:30:00', 120),
(2, 2, 2, '2024-01-11 18:45:00', 90),
(3, 3, 3, '2024-01-12 20:15:00', 140);
INSERT INTO WatchHistory (history_id, user_id, movie_id, watch_date, watched_duration) VALUES
(4, 1, 1, '2024-01-13 10:00:00', 125), -- Inception
(5, 2, 1, '2024-01-14 12:30:00', 120), -- Inception
(6, 3, 1, '2024-01-15 14:00:00', 130), -- Inception
(7, 1, 1, '2024-01-16 16:45:00', 125), -- Inception
(8, 2, 1, '2024-01-17 19:10:00', 120), -- Inception
(9, 3, 1, '2024-01-18 21:30:00', 128), -- Inception
(10, 1, 1, '2024-01-19 23:15:00', 126), -- Inception
(11, 2, 1, '2024-01-20 08:50:00', 122), -- Inception
(12, 3, 1, '2024-01-21 11:20:00', 124), -- Inception
(13, 1, 1, '2024-01-22 13:45:00', 125), -- Inception
(14, 2, 1, '2024-01-23 15:30:00', 119), -- Inception
(15, 3, 1, '2024-01-24 18:00:00', 123), -- Inception
(16, 1, 2, '2024-01-25 20:10:00', 100), -- The Matrix
(17, 2, 2, '2024-01-26 22:30:00', 110), -- The Matrix
(18, 3, 3, '2024-01-27 09:00:00', 135), -- Interstellar
(19, 1, 3, '2024-01-28 11:45:00', 138), -- Interstellar
(20, 2, 3, '2024-01-29 14:20:00', 140); -- Interstellar
SELECT m.title
FROM Movies m
JOIN WatchHistory w ON m.movie_id = w.movie_id
GROUP BY m.movie_id
HAVING COUNT(w.movie_id) >= 10;
-- your code goes here
Q1JFQVRFIFRBQkxFIFVzZXJzICgKICAgIHVzZXJfaWQgSU5UIFBSSU1BUlkgS0VZLAogICAgbmFtZSBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCiAgICBlbWFpbCBWQVJDSEFSKDI1NSkgVU5JUVVFIE5PVCBOVUxMLAogICAgam9pbl9kYXRlIERBVEUgTk9UIE5VTEwsCiAgICBzdWJzY3JpcHRpb25fdHlwZSBWQVJDSEFSKDIwKSBOT1QgTlVMTCBDSEVDSyAoc3Vic2NyaXB0aW9uX3R5cGUgSU4gKCdGcmVlJywgJ0Jhc2ljJywgJ1ByZW1pdW0nKSkKKTsKCkNSRUFURSBUQUJMRSBNb3ZpZXMgKAogICAgbW92aWVfaWQgSU5UIFBSSU1BUlkgS0VZLAogICAgdGl0bGUgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAogICAgcmVsZWFzZV95ZWFyIFlFQVIgTk9UIE5VTEwsCiAgICBnZW5yZSBWQVJDSEFSKDEwMCkgTk9UIE5VTEwsCiAgICByYXRpbmcgREVDSU1BTCgzLDEpIENIRUNLIChyYXRpbmcgQkVUV0VFTiAwLjAgQU5EIDEwLjApCik7CgpDUkVBVEUgVEFCTEUgV2F0Y2hIaXN0b3J5ICgKICAgIGhpc3RvcnlfaWQgSU5UIFBSSU1BUlkgS0VZLAogICAgdXNlcl9pZCBJTlQsCiAgICBtb3ZpZV9pZCBJTlQsCiAgICB3YXRjaF9kYXRlIERBVEVUSU1FIE5PVCBOVUxMLAogICAgd2F0Y2hlZF9kdXJhdGlvbiBJTlQgTk9UIE5VTEwgQ0hFQ0sgKHdhdGNoZWRfZHVyYXRpb24gPj0gMCksCiAgICBGT1JFSUdOIEtFWSAodXNlcl9pZCkgUkVGRVJFTkNFUyBVc2Vycyh1c2VyX2lkKSBPTiBERUxFVEUgQ0FTQ0FERSwKICAgIEZPUkVJR04gS0VZIChtb3ZpZV9pZCkgUkVGRVJFTkNFUyBNb3ZpZXMobW92aWVfaWQpIE9OIERFTEVURSBDQVNDQURFCik7CgotLSBJbnNlcnQgaW50byBVc2VycwpJTlNFUlQgSU5UTyBVc2VycyAodXNlcl9pZCwgbmFtZSwgZW1haWwsIGpvaW5fZGF0ZSwgc3Vic2NyaXB0aW9uX3R5cGUpIFZBTFVFUwooMSwgJ0FsaWNlIEpvaG5zb24nLCAnYWxpY2VAZXhhbXBsZS5jb20nLCAnMjAyMy0wNi0xNScsICdQcmVtaXVtJyksCigyLCAnQm9iIFNtaXRoJywgJ2JvYkBleGFtcGxlLmNvbScsICcyMDIzLTA3LTIwJywgJ0Jhc2ljJyksCigzLCAnQ2hhcmxpZSBEYXZpcycsICdjaGFybGllQGV4YW1wbGUuY29tJywgJzIwMjMtMDgtMTAnLCAnRnJlZScpOwoKLS0gSW5zZXJ0IGludG8gTW92aWVzCklOU0VSVCBJTlRPIE1vdmllcyAobW92aWVfaWQsIHRpdGxlLCByZWxlYXNlX3llYXIsIGdlbnJlLCByYXRpbmcpIFZBTFVFUwooMSwgJ0luY2VwdGlvbicsIDIwMTAsICdTY2ktRmknLCA4LjgpLAooMiwgJ1RoZSBNYXRyaXgnLCAxOTk5LCAnQWN0aW9uJywgOC43KSwKKDMsICdJbnRlcnN0ZWxsYXInLCAyMDE0LCAnU2NpLUZpJywgOC42KTsKCi0tIEluc2VydCBpbnRvIFdhdGNoSGlzdG9yeQpJTlNFUlQgSU5UTyBXYXRjaEhpc3RvcnkgKGhpc3RvcnlfaWQsIHVzZXJfaWQsIG1vdmllX2lkLCB3YXRjaF9kYXRlLCB3YXRjaGVkX2R1cmF0aW9uKSBWQUxVRVMKKDEsIDEsIDEsICcyMDI0LTAxLTEwIDE1OjMwOjAwJywgMTIwKSwKKDIsIDIsIDIsICcyMDI0LTAxLTExIDE4OjQ1OjAwJywgOTApLAooMywgMywgMywgJzIwMjQtMDEtMTIgMjA6MTU6MDAnLCAxNDApOwpJTlNFUlQgSU5UTyBXYXRjaEhpc3RvcnkgKGhpc3RvcnlfaWQsIHVzZXJfaWQsIG1vdmllX2lkLCB3YXRjaF9kYXRlLCB3YXRjaGVkX2R1cmF0aW9uKSBWQUxVRVMKKDQsIDEsIDEsICcyMDI0LTAxLTEzIDEwOjAwOjAwJywgMTI1KSwgLS0gSW5jZXB0aW9uCig1LCAyLCAxLCAnMjAyNC0wMS0xNCAxMjozMDowMCcsIDEyMCksIC0tIEluY2VwdGlvbgooNiwgMywgMSwgJzIwMjQtMDEtMTUgMTQ6MDA6MDAnLCAxMzApLCAtLSBJbmNlcHRpb24KKDcsIDEsIDEsICcyMDI0LTAxLTE2IDE2OjQ1OjAwJywgMTI1KSwgLS0gSW5jZXB0aW9uCig4LCAyLCAxLCAnMjAyNC0wMS0xNyAxOToxMDowMCcsIDEyMCksIC0tIEluY2VwdGlvbgooOSwgMywgMSwgJzIwMjQtMDEtMTggMjE6MzA6MDAnLCAxMjgpLCAtLSBJbmNlcHRpb24KKDEwLCAxLCAxLCAnMjAyNC0wMS0xOSAyMzoxNTowMCcsIDEyNiksIC0tIEluY2VwdGlvbgooMTEsIDIsIDEsICcyMDI0LTAxLTIwIDA4OjUwOjAwJywgMTIyKSwgLS0gSW5jZXB0aW9uCigxMiwgMywgMSwgJzIwMjQtMDEtMjEgMTE6MjA6MDAnLCAxMjQpLCAtLSBJbmNlcHRpb24KKDEzLCAxLCAxLCAnMjAyNC0wMS0yMiAxMzo0NTowMCcsIDEyNSksIC0tIEluY2VwdGlvbgooMTQsIDIsIDEsICcyMDI0LTAxLTIzIDE1OjMwOjAwJywgMTE5KSwgLS0gSW5jZXB0aW9uCigxNSwgMywgMSwgJzIwMjQtMDEtMjQgMTg6MDA6MDAnLCAxMjMpLCAtLSBJbmNlcHRpb24KKDE2LCAxLCAyLCAnMjAyNC0wMS0yNSAyMDoxMDowMCcsIDEwMCksIC0tIFRoZSBNYXRyaXgKKDE3LCAyLCAyLCAnMjAyNC0wMS0yNiAyMjozMDowMCcsIDExMCksIC0tIFRoZSBNYXRyaXgKKDE4LCAzLCAzLCAnMjAyNC0wMS0yNyAwOTowMDowMCcsIDEzNSksIC0tIEludGVyc3RlbGxhcgooMTksIDEsIDMsICcyMDI0LTAxLTI4IDExOjQ1OjAwJywgMTM4KSwgLS0gSW50ZXJzdGVsbGFyCigyMCwgMiwgMywgJzIwMjQtMDEtMjkgMTQ6MjA6MDAnLCAxNDApOyAtLSBJbnRlcnN0ZWxsYXIKClNFTEVDVCBtLnRpdGxlCkZST00gTW92aWVzIG0KSk9JTiBXYXRjaEhpc3RvcnkgdyBPTiBtLm1vdmllX2lkID0gdy5tb3ZpZV9pZApHUk9VUCBCWSBtLm1vdmllX2lkCkhBVklORyBDT1VOVCh3Lm1vdmllX2lkKSA+PSAxMDsKCi0tIHlvdXIgY29kZSBnb2VzIGhlcmU=