Checkpoint: the game launcher
Learn
How this checkpoint works
Six questions about a game launcher: games, players and a month of sessions. Everything you need is in Foundations: picking columns, WHERE, AND and OR, LIKE, ORDER BY, LIMIT and DISTINCT.
No hints until you have checked once. The solution opens after three checks, or if you give up, but then the checkpoint is not cleared this time. Read each question twice. Most misses are a question answered slightly differently from the one asked.
Tables games, players, sessions
| id | title | genre | year | price | multiplayer | critic_score |
|---|---|---|---|---|---|---|
| 1 | Pocket Kingdom | strategy | 2021 | 14.99 | 0 | 86 |
| 2 | Neon Drift | racing | 2023 | 19.99 | 1 | 93 |
| 3 | Hollow Pines | horror | 2020 | 9.99 | 0 | 87 |
| 4 | Star Courier | adventure | 2022 | 24.99 | 0 | 86 |
| 5 | Block Party | party | 2019 | 4.99 | 1 | 90 |
| 6 | Tiny Tactics | strategy | 2024 | 12.99 | 1 | 95 |
| 7 | Moonlit Farm | simulation | 2021 | 13.99 | 1 | 70 |
| 8 | Skyline Rush | platformer | 2018 | 7.99 | 0 | 69 |
| 9 | Deep Signal | horror | 2024 | 17.99 | 0 | 90 |
| 10 | Goal Machine | sports | 2025 | 29.99 | 1 | 88 |
| 11 | Paper Knights | rpg | 2022 | 19.99 | 0 | 69 |
| 12 | Cloud Cafe | simulation | 2023 | 11.99 | 0 | 64 |
First 12 of 30 rows. Query the table to see the rest.
| id | gamertag | country | joined_on |
|---|---|---|---|
| 1 | NoScopeNan | UK | 2024-01-31 |
| 2 | xX_Toast_Xx | Canada | 2025-04-20 |
| 3 | LagIsMyFault | Australia | 2024-11-30 |
| 4 | QuietKeyboard | Ireland | 2025-03-27 |
| 5 | BrbSnacks | USA | 2024-07-19 |
| 6 | MumSaysBedtime | UK | 2025-06-15 |
| 7 | ZeroDeaths | Sweden | 2024-08-27 |
| 8 | AFKAlex | USA | 2024-10-28 |
| 9 | PixelPriya | India | 2025-05-26 |
| 10 | CtrlAltDefeat | UK | 2024-01-05 |
| 11 | SirLagsALot | Germany | 2024-03-28 |
| 12 | MidnightMo | UK | 2025-04-13 |
First 12 of 24 rows. Query the table to see the rest.
| id | player_id | game_id | played_on | minutes | score |
|---|---|---|---|---|---|
| 1 | 21 | 10 | 2026-09-01 | 90 | 990 |
| 2 | 16 | 22 | 2026-09-01 | 90 | 1740 |
| 3 | 17 | 17 | 2026-09-01 | 40 | 1580 |
| 4 | 3 | 17 | 2026-09-01 | 30 | 2500 |
| 5 | 4 | 17 | 2026-09-01 | 90 | 1010 |
| 6 | 13 | 22 | 2026-09-01 | 20 | 1620 |
| 7 | 9 | 15 | 2026-09-01 | 90 | 140 |
| 8 | 12 | 30 | 2026-09-01 | 20 | 1120 |
| 9 | 2 | 16 | 2026-09-01 | 90 | 1280 |
| 10 | 8 | 2 | 2026-09-02 | 25 | 770 |
| 11 | 5 | 22 | 2026-09-02 | 15 | 1260 |
| 12 | 12 | 30 | 2026-09-02 | 25 | 2080 |
First 12 of 240 rows. Query the table to see the rest.
Show the SQL that built them
-- games: a small game launcher. Shared SQL dataset (content/datasets/sql-games.sql), loaded with dataset: sql-games CREATE TABLE games (id INTEGER PRIMARY KEY, title TEXT, genre TEXT, year INTEGER, price REAL, multiplayer INTEGER, critic_score INTEGER); CREATE TABLE players (id INTEGER PRIMARY KEY, gamertag TEXT, country TEXT, joined_on TEXT); CREATE TABLE sessions (id INTEGER PRIMARY KEY, player_id INTEGER REFERENCES players(id), game_id INTEGER REFERENCES games(id), played_on TEXT, minutes INTEGER, score INTEGER); INSERT INTO games VALUES (1, 'Pocket Kingdom', 'strategy', 2021, 14.99, 0, 86), (2, 'Neon Drift', 'racing', 2023, 19.99, 1, 93), (3, 'Hollow Pines', 'horror', 2020, 9.99, 0, 87), (4, 'Star Courier', 'adventure', 2022, 24.99, 0, 86), (5, 'Block Party', 'party', 2019, 4.99, 1, 90), (6, 'Tiny Tactics', 'strategy', 2024, 12.99, 1, 95), (7, 'Moonlit Farm', 'simulation', 2021, 13.99, 1, 70), (8, 'Skyline Rush', 'platformer', 2018, 7.99, 0, 69), (9, 'Deep Signal', 'horror', 2024, 17.99, 0, 90), (10, 'Goal Machine', 'sports', 2025, 29.99, 1, 88), (11, 'Paper Knights', 'rpg', 2022, 19.99, 0, 69), (12, 'Cloud Cafe', 'simulation', 2023, 11.99, 0, 64), (13, 'Turbo Snails', 'racing', 2020, 0.0, 1, 86), (14, 'Lost Archive', 'adventure', 2019, 14.99, 0, 77), (15, 'Rift Arena', 'shooter', 2024, 0.0, 1, 67), (16, 'Echo Valley', 'rpg', 2025, 34.99, 0, 63), (17, 'Pixel Plunder', 'platformer', 2021, 9.99, 1, 92), (18, 'Quiz Royale', 'party', 2023, 0.0, 1, 60), (19, 'Frost Line', 'shooter', 2022, 24.99, 1, 83), (20, 'Garden Golems', 'strategy', 2018, 6.99, 0, 86), (21, 'Night Shift', 'horror', 2023, 12.99, 1, 68), (22, 'Wave Riders', 'sports', 2021, 19.99, 1, 58), (23, 'Mossy Mines', 'simulation', 2025, 16.99, 0, NULL), (24, 'The Last Lantern', 'adventure', 2024, 21.99, 0, 91), (25, 'Byte Brawlers', 'fighting', 2022, 14.99, 1, 62), (26, 'Sword & Spoon', 'rpg', 2020, 11.99, 0, 61), (27, 'Laser Tag Legends', 'shooter', 2019, 4.99, 1, 60), (28, 'Puzzle Lab', 'puzzle', 2024, 5.99, 0, 70), (29, 'Hexfall', 'puzzle', 2021, 3.99, 0, 73), (30, 'Kart Kingdom', 'racing', 2025, 39.99, 1, NULL); INSERT INTO players VALUES (1, 'NoScopeNan', 'UK', '2024-01-31'), (2, 'xX_Toast_Xx', 'Canada', '2025-04-20'), (3, 'LagIsMyFault', 'Australia', '2024-11-30'), (4, 'QuietKeyboard', 'Ireland', '2025-03-27'), (5, 'BrbSnacks', 'USA', '2024-07-19'), (6, 'MumSaysBedtime', 'UK', '2025-06-15'), (7, 'ZeroDeaths', 'Sweden', '2024-08-27'), (8, 'AFKAlex', 'USA', '2024-10-28'), (9, 'PixelPriya', 'India', '2025-05-26'), (10, 'CtrlAltDefeat', 'UK', '2024-01-05'), (11, 'SirLagsALot', 'Germany', '2024-03-28'), (12, 'MidnightMo', 'UK', '2025-04-13'), (13, 'GlitchWitch', 'Brazil', '2024-10-11'), (14, 'Respawn_Ruth', 'New Zealand', '2025-02-20'), (15, 'TeaBagTom', 'UK', '2025-07-18'), (16, 'CampingCarla', 'Spain', '2024-03-26'), (17, 'NoobMaster99', 'USA', '2024-09-17'), (18, 'DizzyDev', 'India', '2024-11-18'), (19, 'SpeedySam', 'UK', '2024-08-23'), (20, 'LootGoblin', 'Canada', '2025-06-09'), (21, 'HeadshotHana', 'Japan', '2024-10-22'), (22, 'ComboKing', 'Nigeria', '2024-01-31'), (23, 'SneakyPete', 'USA', '2024-03-12'), (24, 'BossFightBea', 'Ireland', '2025-07-30'); INSERT INTO sessions VALUES (1, 21, 10, '2026-09-01', 90, 990), (2, 16, 22, '2026-09-01', 90, 1740), (3, 17, 17, '2026-09-01', 40, 1580), (4, 3, 17, '2026-09-01', 30, 2500), (5, 4, 17, '2026-09-01', 90, 1010), (6, 13, 22, '2026-09-01', 20, 1620), (7, 9, 15, '2026-09-01', 90, 140), (8, 12, 30, '2026-09-01', 20, 1120), (9, 2, 16, '2026-09-01', 90, 1280), (10, 8, 2, '2026-09-02', 25, 770), (11, 5, 22, '2026-09-02', 15, 1260), (12, 12, 30, '2026-09-02', 25, 2080), (13, 1, 18, '2026-09-02', 75, 2390), (14, 13, 17, '2026-09-02', 30, 1700), (15, 8, 22, '2026-09-02', 120, 450), (16, 2, 25, '2026-09-02', 15, 740), (17, 8, 15, '2026-09-02', 30, 2470), (18, 3, 2, '2026-09-03', 30, 1540), (19, 16, 23, '2026-09-03', 50, NULL), (20, 20, 23, '2026-09-03', 40, NULL), (21, 5, 2, '2026-09-03', 60, 1440), (22, 11, 14, '2026-09-03', 120, 1260), (23, 3, 3, '2026-09-03', 120, 340), (24, 2, 30, '2026-09-03', 40, 2150), (25, 12, 17, '2026-09-03', 15, 1170), (26, 6, 18, '2026-09-03', 50, 1360), (27, 15, 25, '2026-09-03', 75, 1570), (28, 24, 13, '2026-09-03', 30, 1140), (29, 10, 2, '2026-09-03', 40, 590), (30, 3, 23, '2026-09-03', 40, NULL), (31, 18, 30, '2026-09-03', 90, 2390), (32, 21, 15, '2026-09-04', 50, 1120), (33, 2, 4, '2026-09-04', 15, 1360), (34, 2, 25, '2026-09-04', 60, 320), (35, 20, 17, '2026-09-04', 60, 1920), (36, 3, 17, '2026-09-04', 15, 140), (37, 10, 27, '2026-09-04', 90, 200), (38, 13, 2, '2026-09-04', 40, 690), (39, 2, 13, '2026-09-04', 30, 520), (40, 10, 30, '2026-09-05', 30, 1280), (41, 11, 27, '2026-09-05', 60, 1290), (42, 1, 7, '2026-09-06', 50, NULL), (43, 24, 7, '2026-09-06', 120, NULL), (44, 16, 11, '2026-09-06', 15, 1980), (45, 17, 23, '2026-09-06', 75, NULL), (46, 7, 23, '2026-09-06', 20, NULL), (47, 3, 27, '2026-09-06', 75, 650), (48, 13, 27, '2026-09-06', 45, 570), (49, 3, 19, '2026-09-07', 60, 1350), (50, 15, 16, '2026-09-07', 120, 2320), (51, 23, 5, '2026-09-07', 30, 2350), (52, 13, 23, '2026-09-07', 40, NULL), (53, 9, 30, '2026-09-07', 75, 2290), (54, 11, 7, '2026-09-07', 30, NULL), (55, 16, 5, '2026-09-07', 25, 340), (56, 6, 15, '2026-09-07', 25, 230), (57, 16, 25, '2026-09-07', 20, 2000), (58, 23, 22, '2026-09-07', 120, 760), (59, 1, 12, '2026-09-08', 25, NULL), (60, 7, 6, '2026-09-08', 15, 1800), (61, 19, 5, '2026-09-08', 120, 2120), (62, 4, 30, '2026-09-08', 40, 1180), (63, 8, 7, '2026-09-08', 75, NULL), (64, 24, 17, '2026-09-08', 20, 970), (65, 14, 5, '2026-09-08', 25, 1670), (66, 7, 1, '2026-09-09', 90, 820), (67, 13, 26, '2026-09-09', 30, 1670), (68, 17, 19, '2026-09-09', 40, 1760), (69, 24, 4, '2026-09-09', 50, 290), (70, 24, 17, '2026-09-09', 30, 160), (71, 12, 28, '2026-09-10', 15, NULL), (72, 13, 4, '2026-09-10', 75, 2070), (73, 13, 23, '2026-09-10', 45, NULL), (74, 23, 30, '2026-09-10', 15, 80), (75, 6, 21, '2026-09-10', 15, 1710), (76, 2, 17, '2026-09-10', 20, 820), (77, 16, 27, '2026-09-11', 90, 1200), (78, 12, 7, '2026-09-11', 90, NULL), (79, 17, 2, '2026-09-11', 20, 2100), (80, 7, 14, '2026-09-11', 60, 1950), (81, 10, 16, '2026-09-11', 30, 1070), (82, 18, 3, '2026-09-11', 20, 750), (83, 12, 30, '2026-09-12', 50, 2400), (84, 18, 28, '2026-09-12', 50, NULL), (85, 7, 2, '2026-09-12', 75, 440), (86, 5, 9, '2026-09-12', 120, 1900), (87, 12, 2, '2026-09-12', 120, 1060), (88, 15, 15, '2026-09-12', 45, 2110), (89, 7, 15, '2026-09-13', 120, 1380), (90, 21, 5, '2026-09-13', 60, 530), (91, 20, 7, '2026-09-13', 30, NULL), (92, 14, 2, '2026-09-13', 120, 1100), (93, 4, 13, '2026-09-13', 60, 1140), (94, 23, 25, '2026-09-13', 90, 1580), (95, 3, 2, '2026-09-13', 25, 1030), (96, 14, 27, '2026-09-13', 15, 2340), (97, 11, 30, '2026-09-13', 15, 1530), (98, 3, 12, '2026-09-14', 60, NULL), (99, 11, 19, '2026-09-14', 40, 1290), (100, 16, 7, '2026-09-14', 75, NULL), (101, 18, 16, '2026-09-14', 50, 730), (102, 17, 14, '2026-09-14', 30, 1580), (103, 7, 7, '2026-09-14', 60, NULL), (104, 14, 17, '2026-09-14', 40, 1390), (105, 2, 24, '2026-09-14', 60, 350), (106, 19, 27, '2026-09-14', 45, 2040), (107, 24, 25, '2026-09-14', 30, 1870), (108, 5, 8, '2026-09-15', 40, 70), (109, 12, 24, '2026-09-15', 25, 2500), (110, 6, 5, '2026-09-15', 60, 750), (111, 17, 14, '2026-09-15', 45, 1710), (112, 5, 27, '2026-09-15', 20, 2000), (113, 4, 14, '2026-09-15', 25, 1750), (114, 20, 8, '2026-09-15', 50, 1960), (115, 3, 12, '2026-09-15', 75, NULL), (116, 14, 23, '2026-09-16', 40, NULL), (117, 5, 9, '2026-09-16', 75, 1720), (118, 23, 5, '2026-09-16', 90, 1730), (119, 3, 15, '2026-09-16', 30, 880), (120, 5, 5, '2026-09-16', 45, 2190), (121, 3, 5, '2026-09-16', 25, 1370), (122, 8, 17, '2026-09-16', 25, 910), (123, 11, 13, '2026-09-16', 20, 70), (124, 17, 12, '2026-09-16', 120, NULL), (125, 21, 14, '2026-09-16', 60, 950), (126, 19, 21, '2026-09-16', 120, 1230), (127, 18, 28, '2026-09-17', 75, NULL), (128, 8, 15, '2026-09-17', 75, 790), (129, 5, 19, '2026-09-17', 40, 1510), (130, 14, 17, '2026-09-17', 45, 320), (131, 18, 23, '2026-09-17', 90, NULL), (132, 1, 9, '2026-09-17', 15, 1440), (133, 13, 15, '2026-09-17', 40, 750), (134, 1, 15, '2026-09-18', 90, 1720), (135, 2, 7, '2026-09-18', 45, NULL), (136, 7, 25, '2026-09-18', 120, 600), (137, 14, 15, '2026-09-18', 25, 560), (138, 9, 14, '2026-09-18', 75, 1350), (139, 4, 9, '2026-09-18', 40, 230), (140, 11, 3, '2026-09-18', 20, 1150), (141, 11, 25, '2026-09-18', 20, 1280), (142, 20, 25, '2026-09-19', 20, 150), (143, 12, 18, '2026-09-19', 25, 280), (144, 13, 15, '2026-09-19', 15, 1600), (145, 24, 28, '2026-09-19', 60, NULL), (146, 13, 9, '2026-09-19', 45, 580), (147, 15, 17, '2026-09-19', 20, 1990), (148, 7, 17, '2026-09-19', 45, 2110), (149, 14, 17, '2026-09-19', 20, 1680), (150, 21, 14, '2026-09-19', 20, 1230), (151, 23, 15, '2026-09-19', 90, 2400), (152, 5, 22, '2026-09-19', 25, 500), (153, 14, 2, '2026-09-19', 75, 830), (154, 12, 8, '2026-09-19', 30, 1580), (155, 7, 15, '2026-09-20', 15, 2410), (156, 18, 23, '2026-09-20', 15, NULL), (157, 14, 16, '2026-09-20', 40, 1680), (158, 23, 17, '2026-09-20', 75, 620), (159, 13, 7, '2026-09-21', 25, NULL), (160, 1, 23, '2026-09-21', 20, NULL), (161, 12, 13, '2026-09-21', 90, 90), (162, 21, 18, '2026-09-21', 120, 2110), (163, 24, 19, '2026-09-21', 25, 1380), (164, 12, 2, '2026-09-21', 15, 2210), (165, 1, 25, '2026-09-21', 25, 290), (166, 15, 19, '2026-09-21', 15, 1390), (167, 18, 7, '2026-09-22', 50, NULL), (168, 10, 5, '2026-09-22', 90, 560), (169, 20, 2, '2026-09-22', 40, 1510), (170, 12, 2, '2026-09-22', 30, 560), (171, 13, 25, '2026-09-22', 15, 290), (172, 7, 21, '2026-09-22', 45, 2380), (173, 11, 17, '2026-09-22', 30, 2100), (174, 8, 12, '2026-09-22', 40, NULL), (175, 11, 8, '2026-09-22', 50, 1500), (176, 9, 23, '2026-09-22', 90, NULL), (177, 3, 30, '2026-09-23', 75, 1540), (178, 16, 18, '2026-09-23', 15, 500), (179, 16, 4, '2026-09-23', 25, 210), (180, 9, 5, '2026-09-23', 15, 140), (181, 12, 5, '2026-09-23', 75, 1670), (182, 8, 23, '2026-09-23', 20, NULL), (183, 9, 10, '2026-09-24', 50, 700), (184, 7, 7, '2026-09-24', 15, NULL), (185, 16, 2, '2026-09-24', 40, 860), (186, 9, 15, '2026-09-24', 45, 1040), (187, 7, 4, '2026-09-24', 120, 2410), (188, 10, 13, '2026-09-24', 45, 670), (189, 7, 30, '2026-09-25', 25, 1120), (190, 17, 7, '2026-09-25', 45, NULL), (191, 8, 12, '2026-09-25', 45, NULL), (192, 24, 30, '2026-09-25', 25, 2130), (193, 10, 19, '2026-09-25', 25, 1140), (194, 16, 30, '2026-09-25', 45, 770), (195, 8, 17, '2026-09-25', 75, 910), (196, 2, 15, '2026-09-25', 120, 940), (197, 21, 6, '2026-09-25', 25, 2380), (198, 2, 17, '2026-09-26', 60, 500), (199, 3, 15, '2026-09-26', 15, 2260), (200, 1, 8, '2026-09-26', 20, 1140), (201, 13, 19, '2026-09-26', 90, 360), (202, 5, 2, '2026-09-26', 20, 1190), (203, 9, 15, '2026-09-26', 25, 990), (204, 19, 15, '2026-09-26', 30, 1940), (205, 19, 14, '2026-09-26', 50, 1430), (206, 20, 13, '2026-09-27', 40, 1030), (207, 19, 17, '2026-09-27', 90, 390), (208, 10, 9, '2026-09-27', 90, 680), (209, 15, 17, '2026-09-27', 75, 260), (210, 11, 2, '2026-09-27', 15, 760), (211, 24, 17, '2026-09-27', 120, 1810), (212, 7, 7, '2026-09-27', 25, NULL), (213, 24, 18, '2026-09-27', 25, 2480), (214, 5, 25, '2026-09-27', 90, 880), (215, 1, 15, '2026-09-27', 20, 2320), (216, 21, 19, '2026-09-27', 75, 1270), (217, 19, 5, '2026-09-28', 75, 1640), (218, 17, 8, '2026-09-28', 75, 1610), (219, 16, 7, '2026-09-28', 60, NULL), (220, 17, 24, '2026-09-28', 45, 750), (221, 12, 5, '2026-09-29', 60, 890), (222, 16, 11, '2026-09-29', 15, 990), (223, 14, 7, '2026-09-29', 30, NULL), (224, 4, 5, '2026-09-29', 30, 380), (225, 13, 5, '2026-09-29', 45, 2300), (226, 12, 25, '2026-09-29', 90, 170), (227, 4, 17, '2026-09-29', 40, 2050), (228, 21, 7, '2026-09-29', 120, NULL), (229, 3, 16, '2026-09-29', 40, 2120), (230, 24, 4, '2026-09-29', 45, 260), (231, 15, 7, '2026-09-29', 40, NULL), (232, 9, 17, '2026-09-29', 50, 2390), (233, 17, 7, '2026-09-30', 20, NULL), (234, 3, 15, '2026-09-30', 50, 380), (235, 11, 12, '2026-09-30', 15, NULL), (236, 9, 12, '2026-09-30', 20, NULL), (237, 9, 19, '2026-09-30', 40, 1740), (238, 17, 4, '2026-09-30', 60, 410), (239, 11, 14, '2026-09-30', 20, 870), (240, 13, 7, '2026-09-30', 40, NULL);
Checkpoint
Cheap multiplayer games
Return the title and price of every multiplayer game (multiplayer is 1) that costs less than 10. Cheapest first; games with the same price in alphabetical order of title.
On your own: hints appear after your first check, a solution after 3 checks or if you give up.
-- Your query here
Checkpoint
Top three by critics
Return the title of the three games with the highest critic_score, best first, and a second column named out_of_10 that shows the score out of 10 (so 87 becomes 8.7).
On your own: hints appear after your first check, a solution after 3 checks or if you give up.
-- Your query here
Checkpoint
Genres with a free game
Return every genre that has at least one free game (price is 0), each genre once, in alphabetical order.
On your own: hints appear after your first check, a solution after 3 checks or if you give up.
-- Your query here
CheckpointPredict the output
Horror or cheap puzzles
What does this query return? One title per line.
Read the program, type exactly what it prints, then lock it in. It runs after that.
SELECT title FROM games WHERE genre = 'horror' OR genre = 'puzzle' AND price < 5 ORDER BY title;
CheckpointFix the bug
No kingdoms found
This should return the title and year of every game with King anywhere in its title, oldest first. It returns nothing. Fix it.
On your own: hints appear after your first check, a solution after 3 checks or if you give up.
SELECT title, year FROM games WHERE title = '%King%' ORDER BY year;
Checkpoint
New players from home
Return the gamertag and country of players from the UK or Ireland who joined on or after 1 January 2025 (joined_on is stored like 2025-01-01), earliest joiner first.
On your own: hints appear after your first check, a solution after 3 checks or if you give up.
-- Your query here
Cleared
Go back to
You can now
Save your progress to a free account
Next up: Core, with Premium
NULL, counting, grouping, CASE and joins across three or four tables, including a table joined to itself, with a checkpoint after each group. Then change data with INSERT, UPDATE and DELETE.
- 08NULL, the value that isn't there
- 09Counting and adding up
- 10GROUP BY and HAVING
- 11CASE, if-then inside a query
- 12Checkpoint: summing up the launcher
- 13Joining two tables
- 14LEFT JOIN and the missing matches
- 15Joining three tables or more
- 16Joining a table to itself
- 17Checkpoint: the online shop
- 18INSERT, UPDATE and DELETE
Premium is £7.99 a month or £59 a year and opens every lesson after Foundations, in all four courses. What is included