human
Schema:
circuits (circuitId, circuitRef, name, location, country, lat, lng, alt, url)
races (raceId, year, round, circuitId, name, date, time, url)
drivers (driverId, driverRef, number, code, forename, surname, dob, nationality, url)
status (statusId, status)
seasons (year, url)
constructors (constructorId, constructorRef, name, nationality, url)
constructorStandings (constructorStandingsId, raceId, constructorId, points, position, positionText, wins)
results (resultId, raceId, driverId, constructorId, number, grid, position, positionText, positionOrder, points, laps, time, milliseconds, fastestLap, rank, fastestLapTime, fastestLapSpeed, statusId)
driverStandings (driverStandingsId, raceId, driverId, points, position, positionText, wins)
constructorResults (constructorResultsId, raceId, constructorId, points, status)
qualifying (qualifyId, raceId, driverId, constructorId, number, position, q1, q2, q3)
pitStops (raceId, driverId, stop, lap, time, duration, milliseconds)
lapTimes (raceId, driverId, lap, position, time, milliseconds)
Please answer with SQL.
assistant
Sure, I understand.
human
What are the forenames and surnames of drivers that participated in races with name Australian Grand Prix?
assistant
SELECT T3.forename , T3.surname FROM races AS T1 JOIN results AS T2 ON T1.raceid = T2.raceid JOIN drivers AS T3 ON T2.driverid = T3.driverid WHERE T1.name = 'Australian Grand Prix';
human
Among them, show those who did not participate in the races named Chinese Grand Prix.
assistant
SELECT T3.forename , T3.surname FROM races AS T1 JOIN results AS T2 ON T1.raceid = T2.raceid JOIN drivers AS T3 ON T2.driverid = T3.driverid WHERE T1.name = "Australian Grand Prix" EXCEPT SELECT T3.forename , T3.surname FROM races AS T1 JOIN results AS T2 ON T1.raceid = T2.raceid JOIN drivers AS T3 ON T2.driverid = T3.driverid WHERE T1.name = "Chinese Grand Prix" ;