我是SQL的新手,我正在尝试创建一个与公式1相关的数据库作为一些练习。
我想要做的是创建一个触发器,这样当我更新驱动程序的点时,触发器将启动一个代码,该代码将添加两个驱动程序的点,这些驱动程序一起驱动接缝团队,并放置结果进入两个驱动程序竞争的团队的Constructor表上的Constructor_Points列。例如,当红牛车手完成第一和第二时,我希望在F1车手表上添加积分时,将获得的总分数(在这种情况下为43)添加到构造函数表中的红牛总分数。
我要求帮助的问题涉及我提交的查询(见下文),该查询没有给我我希望的回复
这是query
:
select Team, sum (Points) as "Total_Points", min ("Highest_race_finish") as "Highest Race
Finish", max (Total_top_Position) as 'Total Top Position'
from "F1 Drivers"
group by Team
order by Total_Points desc, Highest_race_finish asc, 'Total_top_Position' asc;
然而,该表产生了错误的结果。这是表格中不正确的部分
Team,Total_Points,最高比赛结束,总排名 - 这些是
列Marussia, 0, 13, 1
Caterham 0, 14, 1
Williams 0, 11, 1
桌子应该做的是将威廉姆斯置于Marussua和Caterham之上,因为威廉姆斯的最高比赛位置(比数字)低于Marussia和Caterham。然而,当他们恰好联合起来时,这个桌子正确定位了其他车队,例如莲花,法拉利和迈凯轮和索伯
Team,Total_Points,最高比赛结束,总排名 - 这些是
列Lotus, 40, 1, 1
Ferrari 40, 2, 1
Sauber, 4, 8, 1
McLaren 4, 9, 1
为什么会出现此错误?如果您需要更多信息,请询问。
希望这一切都有道理。任何帮助将不胜感激。
答案 0 :(得分:1)
这是您的order by
条款:
order by Total_Points desc, Highest_race_finish asc, 'Total_top_Position' asc;
第三部分是常量字符串。字符串是'Total_top_Position'
。按常数排序是无操作。它没有做任何有用的事情。
你可能意味着:
order by Total_Points desc, Highest_race_finish asc, Total_top_Position asc;
编写SQL时,只对字符串常量和日期常量使用单引号。它们不应用于任何其他目的。