如何使用 SQL 乘以值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/4142408/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to multiply values using SQL
提问by Jeff
Ok so I'm working on my homework and am having trouble figuring out how to multiply with SQL and how to get this to order correctly.
好的,所以我正在做作业,但在弄清楚如何与 SQL 相乘以及如何正确排序时遇到了麻烦。
I am supposed to "create a query that lists players (player_name), current salary and a new (created) column that reflects a 10% increase in salary (calculated as salary * 1.1). Order the data in descending sequence by salary."
我应该“创建一个查询,列出球员 (player_name)、当前薪水和一个新的(创建的)列,反映薪水增加 10%(计算为薪水 * 1.1)。按薪水降序排列数据。”
It is just a simple NHL database our teacher made up for this assignment. There are 74 players in the players table. The fields in the players table are: player_id, player_name, player_salary, team_id, and position_id.
这只是我们老师为这项作业制作的一个简单的 NHL 数据库。球员表中有 74 名球员。球员表中的字段是:player_id、player_name、player_salary、team_id 和 position_id。
Here is what I have so far:
这是我到目前为止所拥有的:
SELECT player_name, player_salary, SUM(player_salary*1.1) AS NewSalary
FROM players
GROUP BY player_salary, player_name;
This way it is at least running. I believe I have to change GROUP BY to ORDER BY and use the DESC tag at the end, but that does not work. This is the output I get from running this query:
这样它至少正在运行。我相信我必须将 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
It's probably something relatively simple that I'm overlooking but I'm not finding anything similar in the textbook for a reference point. Any help is greatly appreciated.
这可能是我忽略的相对简单的事情,但我没有在教科书中找到任何类似的参考点。任何帮助是极大的赞赏。
回答by AndreKR
Why use GROUP BY at all?
为什么要使用 GROUP BY?
SELECT player_name, player_salary, player_salary*1.1 AS NewSalary
FROM players
ORDER BY player_salary DESC
回答by Nicolas Repiquet
Why are you grouping by? Do you mean order by?
你为什么要分组?你的意思是订购吗?
SELECT player_name, player_salary, player_salary * 1.1 AS NewSalary
FROM players
ORDER BY player_salary, player_name;
回答by Mehper C. Palavuzlar
You don't need to use GROUP BY but using it won't change the outcome. Just add an ORDER BY line at the end to sort your results.
您不需要使用 GROUP BY 但使用它不会改变结果。只需在最后添加一个 ORDER BY 行即可对结果进行排序。
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
回答by Tebo
Here it is:
这里是:
select player_name, player_salary, (player_salary * 1.1) as player_newsalary
from player
order by player_name, player_salary, player_newsalary desc
You don't need to "group by" if there is only one instance of a player in the table.
如果表中只有一个玩家实例,则不需要“分组依据”。