import sqlite3
conn = sqlite3.connect(':memory:')
cur = conn.cursor()
# Create tables
cur.execute('CREATE TABLE Passed(student TEXT, course TEXT)')
cur.execute('CREATE TABLE Required(course TEXT)')
# Insert data
cur.executemany('INSERT INTO Passed VALUES (?, ?)', [
('Alice', 'Math'), ('Alice', 'Physics'), ('Bob', 'Math'), ('Bob', 'Physics'), ('Bob', 'Chemistry'), ('Charlie', 'Math')
])
cur.executemany('INSERT INTO Required VALUES (?)', [('Math',), ('Physics',)])
# Division query: find students who passed all required courses
cur.execute('''
SELECT student FROM Passed p
WHERE NOT EXISTS (
SELECT course FROM Required r
WHERE NOT EXISTS (
SELECT * FROM Passed p2
WHERE p2.student = p.student AND p2.course = r.course
)
)
GROUP BY student
''')
for row in cur.fetchall():
print(row[0])