SQL查询车辆行驶里程
我正试图为我的大学课程设计一个车队管理数据库 目前,我的查询搜索我创建的“视图”,并根据年份计算员工的总里程,方法是从他们的起始里程中减去他们旅程的结束里程,这将起作用并在结果中对他们进行分组。 但是,不管我怎么努力,我都不能从我创造的结果中质疑员工每年做的超过25000英里的事情。我不确定是否可以查询别名列的结果SQL查询车辆行驶里程,sql,Sql,我正试图为我的大学课程设计一个车队管理数据库 目前,我的查询搜索我创建的“视图”,并根据年份计算员工的总里程,方法是从他们的起始里程中减去他们旅程的结束里程,这将起作用并在结果中对他们进行分组。 但是,不管我怎么努力,我都不能从我创造的结果中质疑员工每年做的超过25000英里的事情。我不确定是否可以查询别名列的结果 SELECT Assigned_Vehicle_id "Assigned Vehicle id", Payroll_Number "Payroll Number",
SELECT Assigned_Vehicle_id "Assigned Vehicle id",
Payroll_Number "Payroll Number", First_Name "First Name",
Surname, Vehicle_Registration "Vehicle Registration",
Manufacturer_Name "Manufacturer Name", Model_Name "Model Name",
SUM(End_Miles - Start_Miles) "Total Miles Driven"
FROM Destinations
WHERE YEAR(Start_Date) = 2016
GROUP BY Assigned_Vehicle_id, Payroll_Number, First_Name, Surname,
Vehicle_Registration, Manufacturer_Name, Model_Name;
试试这个。注意groupby后面的HAVING子句
SELECT Assigned_Vehicle_id "Assigned Vehicle id",
Payroll_Number "Payroll Number", First_Name "First Name", Surname,
Vehicle_Registration "Vehicle Registration", Manufacturer_Name
"Manufacturer Name",
Model_Name "Model Name", SUM(End_Miles - Start_Miles) "Total Miles Driven"
FROM Destinations
WHERE YEAR(Start_Date) = 2016
GROUP BY
Assigned_Vehicle_id, Payroll_Number, First_Name, Surname,
Vehicle_Registration, Manufacturer_Name, Model_Name
HAVING SUM(End_Miles - Start_Miles) > 25000
在某些方面,his中建议的HAVING子句是好的、简单的,并且很可能是预期的,尽管它涉及到两次写出表达式,而不是允许您使用别名。我相信,有些DBMS允许您在后续子句(如GROUP BY或HAVING子句)中使用输出列别名,但标准不允许,因此大多数DBMS也不允许 然而,还有另一种可能有效的替代方案:
SELECT "Assigned Vehicle id",
"Payroll Number", "First Name",
Surname, "Vehicle Registration",
"Manufacturer Name", "Model Name",
"Total Miles Driven"
FROM (SELECT Assigned_Vehicle_id "Assigned Vehicle id",
Payroll_Number "Payroll Number", First_Name "First Name",
Surname, Vehicle_Registration "Vehicle Registration",
Manufacturer_Name "Manufacturer Name", Model_Name "Model Name",
SUM(End_Miles - Start_Miles) "Total Miles Driven"
FROM Destinations
WHERE YEAR(Start_Date) = 2016
GROUP BY Assigned_Vehicle_id, Payroll_Number, First_Name, Surname,
Vehicle_Registration, Manufacturer_Name, Model_Name
) AS Mileages_In_2016
WHERE "Total Miles Driven" > 25000
这会将原始查询作为FROM子句中的“子查询”运行,允许您在外部查询中针对外部查询中的
“行驶总里程”
列编写筛选器。您是否尝试过HAVING
子句?欢迎使用堆栈溢出。请注意,在这里说“谢谢”的首选方式是投票选出好的问题和有用的答案(一旦你有足够的声誉这么做),并接受对你提出的任何问题最有用的答案(这也会给你的声誉带来一点提升)。请看页面,大家好,我只是想说一声非常感谢,我非常感谢,你们的两个解决方案都非常有效,并给了我我所需要的结果。我想我就快到了,只是缺少最后一点语法知识。我正在考虑将我的查询结果输出到一个表中,接下来是否需要研究“INSERT into语句”?再次感谢你