【发布时间】:2016-05-26 07:39:19
【问题描述】:
我有一个来自 ergast.com 的 f1 database。我试图在每场比赛中为每个车手获得最好的laptime 和pitstops 的数量,所以我编写了这样的 sql 查询:
SELECT results.driverId, results.constructorId, races.circuitId, races."year"-1949,
results.statusId, results.positionOrder, results.grid, results.points,
results.laps, ISNULL(max(pitstops.stop), 0), min(laptimes.milliseconds),
results.fastestLapTime, drivers.forename, drivers.surname, circuits.name
FROM results
INNER JOIN races
ON (results.raceId = races.raceId)
LEFT OUTER JOIN pitstops
ON (races.raceId = pitstops.raceId)
LEFT OUTER JOIN laptimes
ON (laptimes.raceId = races.raceId)
INNER JOIN drivers
ON (drivers.driverId = results.driverId)
INNER JOIN circuits
ON (circuits.circuitId = races.circuitId)
WHERE ((races."year"=2011) OR (races."year"=2012))
AND ((races.circuitId = 1) OR (races.circuitId = 2))
GROUP BY results.driverId, constructorId, races.circuitId, races."year"-1949,
statusId, positionOrder, grid, points, laps, fastestLapTime, forename,
surname, circuits.name
不幸的是,对于给定比赛的每位车手,这给了我相同的最佳 laptime 和 pitstops 数量。我该如何解决?我应该在group by 中添加一些内容吗?
【问题讨论】:
-
因为你是按
fastestLapTime分组的,不是吗? -
您可以更改您的 or 语句,对吗? (2011、2012)中的年份和(1、2)中的电路ID?
-
能否请您为所有列添加一个限定符。例如:
fastestLapTime是否来自表laptimes?然后laptimes.fastestLapTime。等 -
@ThorstenKettner 完成
-
@IvanStarostin 我已经添加它来检查结果,不幸的是删除它并不会改变结果
标签: sql sql-server tsql