如何使用SQL乘法值
好的,我正在做我的家庭作业,我很难弄清楚如何使用SQL进行乘法,以及如何正确排序 我应该“创建一个查询,列出球员(球员姓名)、当前工资和一个新的(创建的)列,该列反映工资增加10%(按工资*1.1计算)。按工资降序排列数据。” 这只是一个简单的NHL数据库,我们的老师为这个作业准备的。球员表上有74名球员。球员表中的字段包括:球员id、球员姓名、球员工资、球队id和职位id 以下是我到目前为止的情况:如何使用SQL乘法值,sql,oracle,Sql,Oracle,好的,我正在做我的家庭作业,我很难弄清楚如何使用SQL进行乘法,以及如何正确排序 我应该“创建一个查询,列出球员(球员姓名)、当前工资和一个新的(创建的)列,该列反映工资增加10%(按工资*1.1计算)。按工资降序排列数据。” 这只是一个简单的NHL数据库,我们的老师为这个作业准备的。球员表上有74名球员。球员表中的字段包括:球员id、球员姓名、球员工资、球队id和职位id 以下是我到目前为止的情况: SELECT player_name, player_salary, SUM(player_s
SELECT player_name, player_salary, SUM(player_salary*1.1) AS NewSalary
FROM players
GROUP BY player_salary, player_name;
这样,它至少在运行。我相信我必须将GROUP BY更改为ORDER BY,并在最后使用DESC标记,但这不起作用。这是我通过运行此查询获得的输出:
PLAYER_NAME PLAYER_SALARY NEWSALARY
-------------------- ---------------------- ----------------------
Johan Franzen 42000 46200
Brad Stuart 18000 19800
Tomas Holmstrom 38000 41800
Dan Cleary 10000 11000
Jonathan Toews 32000 35200
David Krejci 28000 30800
Mike Ribeiro 10000 11000
Steve Sullivan 20005 22005.5
Ryan Getzlaf 28000 30800
Chris Stewart 18000 19800
Brad Richards 10000 11000
Nathan Horton 20000 22000
James Neal 38000 41800
Nicklas Lidstrom 44000 48400
Jiri Hudler 28000 30800
TJ Oshie 44000 48400
Blake Comeau 10000 11000
Drew Stafford 26888 29576.8
Brenden Morrow 10000 11000
Daniel Sedin 26000 28600
PA Parenteau 43000 47300
Henrik Zetterberg 32000 35200
Valtteri Filppula 28000 30800
Tomas Kopecky 26000 28600
Andrei Kostitsyn 28000 30800
Marian Hossa 44000 48400
Henrik Sedin 10000 11000
Don Smith 20520 22572
Rick Nash 15750 17325
Todd Bertuzzi 43000 47300
Patrick Eaves 10000 11000
Mike Modano 80000 88000
Alex Goligoski 28000 30800
Patrick Kane 44000 48400
Bobby Ryan 26000 28600
Dustin Brown 10000 11000
Patrick Sharp 43000 47300
John-Michael Liles 10000 11000
Paul Stastny 14000 15400
Matt Cullen 10000 11000
Martin St Louis 32000 35200
Alexander Semin 28000 30800
Niklas Kronwall 10000 11000
John Tavares 42000 46200
Matt Moulson 38000 41800
Tobias Enstrom 42000 46200
Matt Duchene 18000 19800
Steven Stamkos 32000 35200
Sidney Crosby 42000 46200
Teemu Selanne 10000 11000
Daniel Alfredsson 10000 11000
Evgeni Malkin 10000 11000
Andrew Ladd 20000 22000
Corey Perry 28000 30800
Adam Keefe 315000 346500
Brian Rafalski 20000 22000
Darren Helm 10000 11000
Brandon Dubinsky 28000 30800
Mark Letestu 10000 11000
Loui Eriksson 20000 22000
Clarke MacArthur 42000 46200
Kris Letang 30000 33000
Pavel Datsyuk 26000 28600
James Wisniewski 32000 35200
Nicklas Lidstrom 43000 47300
Milan Hejduk 18000 19800
Tyler Ennis 43000 47300
Paul Martin 38000 41800
Derek Roy 28000 30800
Mikko Koivu 10000 11000
Joe Pavelski 20000 22000
Joe Thornton 10000 11000
Phil Kessel 26000 28600
Alex Ovechkin 18000 19800
74 rows selected
我可能忽略了一些相对简单的东西,但我在教科书中找不到任何类似的参考点。非常感谢您的帮助。为什么要使用GROUP BY
SELECT player_name, player_salary, player_salary*1.1 AS NewSalary
FROM players
ORDER BY player_salary DESC
你为什么要分组?你是说点菜吗
SELECT player_name, player_salary, player_salary * 1.1 AS NewSalary
FROM players
ORDER BY player_salary, player_name;
您不需要使用GROUP BY,但使用它不会改变结果。只需在末尾添加一行ORDER BY line即可对结果进行排序
SELECT player_name, player_salary, SUM(player_salary*1.1) AS NewSalary
FROM players
GROUP BY player_salary, player_name;
ORDER BY SUM(player_salary*1.1) DESC
这是:
select player_name, player_salary, (player_salary * 1.1) as player_newsalary
from player
order by player_name, player_salary, player_newsalary desc
如果表中只有一个球员实例,则不需要“分组依据”。不按球员工资降序排列,而是在球员姓名上先排列Z-a。是的。其他Column参数适用于球员姓名或/和球员工资不唯一的情况。我使用SQL Server,有兴趣了解Oracle是否可以在没有分组依据的情况下处理查询,因为在SQL Server中,如果省略了查询,则查询将不会解析。@Tony此处不需要聚合函数。但无论如何,在MSSQL中,聚合没有组的函数不是意味着“将它们全部组合在一行中”吗?但是,由于未聚合字段(这是正确的),它可能无法解析。谢谢您的回复。您是对的聚合函数不是必需的,您提供的SQL实际上在SQL Server中工作,我弄错了。SUM不是必需的,对于每个播放器,您都在添加一个值。如果每个玩家都有多张唱片,那么你可以使用sum…我知道。我只是给出了上面的代码作为替代答案(我只添加了最后一行)。获取的结果相同。@MozenRath请注意。