Как умножить значения с помощью SQL - PullRequest
5 голосов
/ 10 ноября 2010

Хорошо, так что я работаю над домашней работой, и у меня возникают проблемы с выяснением, как умножить с помощью SQL и как правильно упорядочить это.

Я должен "создать запрос, который перечисляет игроков (имя_игрока), текущую зарплату и новый (созданный) столбец, который отражает увеличение заработной платы на 10% (рассчитывается как зарплата * 1.1). Порядок данных в порядке убывания: зарплаты. "

Это просто простая база данных НХЛ, которую наш учитель составил для этого задания. В таблице игроков 74 игрока. Поля в таблице игроков: player_id, player_name, player_salary, team_id и position_id.

Вот что у меня есть:

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

Вероятно, это что-то относительно простое, что я упускаю из виду, но я не нахожу ничего похожего в учебнике для справки. Любая помощь с благодарностью.

Ответы [ 4 ]

13 голосов
/ 10 ноября 2010

Зачем вообще использовать GROUP BY?

SELECT player_name, player_salary, player_salary*1.1 AS NewSalary
FROM players
ORDER BY player_salary DESC
3 голосов
/ 10 ноября 2010

Почему вы группируете? Вы имеете в виду заказ?

SELECT player_name, player_salary, player_salary * 1.1 AS NewSalary
FROM players
ORDER BY player_salary, player_name;
1 голос
/ 10 ноября 2010

Вам не нужно использовать 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
0 голосов
/ 10 ноября 2010

Вот оно:

select player_name, player_salary, (player_salary * 1.1) as player_newsalary
from player 
order by player_name, player_salary, player_newsalary desc

Вам не нужно «группировать», если в таблице только один экземпляр игрока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...