按查询排序产生错误的结果

时间:2014-02-07 17:19:46

标签: sqlite

我是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

为什么会出现此错误?如果您需要更多信息,请询问。

希望这一切都有道理。任何帮助将不胜感激。

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时,只对字符串常量和日期常量使用单引号。它们不应用于任何其他目的。