如何使用 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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-01 08:12:50  来源:igfitidea点击:

How to multiply values using SQL

sqloracle

提问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.

如果表中只有一个玩家实例,则不需要“分组依据”。