从三个单独的表中提取数据的一些问题

时间:2016-01-24 21:57:41

标签: sql

我被问到了这个问题:

编写一个SQL命令,以显示每个具有总计的员工 距离员工姓名超过100的所有旅程的距离, 员工在所有旅程中使用的总升数。 (该 旅程的升数是distanceInKm除以kmPerLitre。)

对于以下数据集: Dataset

我或多或少地碰到了一堵砖墙。我之前有一个类似的问题,最终有些用户告诉我用内部连接来解决它,我从那时起就一直这样做,但是这个问题唯一地要求来自所有三个表的数据。这是我的解决方案:

python3

(请忽略小差异;我的Employee表名为Employe,我的distanceSinceService列刚刚调用"距离")

但这给了我绝对疯狂的输出,我不知道发生了什么。我们在课堂上做了一些小组,但没有一个像这样困难,所以我有点卡住了。

3 个答案:

答案 0 :(得分:4)

这是一个加入你的表格的版本,应该能满足你的期望

SELECT E.NAME
     , SUM(T.distanceInKM/C.kmPerLitre) AS NumLitres
     , SUM(T.distanceInKM) AS TotalDistanceInKm
  FROM Employe E
 INNER
  JOIN TravelCost T
    ON E.id = T.employeeId
 INNER 
  JOIN CAR C
    ON T.carRegNo = C.regNo
 GROUP 
    BY E.name
HAVING SUM(T.distanceInKM) > 100
;

希望这有帮助

答案 1 :(得分:0)

尝试这样:

for (int i = 1; i <= t; i++) {
    cin >> input;
    // Some computations specific to the problem
    cout << output << endl; // Pay attention on how the problem wants the output to be printed.
}

结果

while (cin >> input) {
    // Computations...
    cout << output << endl;
}

答案 2 :(得分:0)

试试这个。我实际上不确定它是否通过语法检查,但如果确实如此 - 是的! :d

SELECT e.Name,
sum(t.DistanceInKm) DistanceInKm,
sum(t.DistanceInKm) / c.KmPerLitre FuelSpent
FROM TravelCost t JOIN Employee e ON t.EmployeeId = e.Id
JOIN Car c ON t.CarRegNo = c.RegNo
GROUP BY e.Name, c.KmPerLitre
HAVING sum(t.DistanceInKm) > 100;