如何选择我的所有列并选择旁边所有工资的总和?

时间:2018-04-09 21:04:06

标签: sql

id | first_name | salary  
-------------------------------
1  | Hamdi      | 100
------------------------------
2  | Abdo       | 100
-----------------------------
3  | Haji       | 100

这是我期望的输出。

id | first_name | salary | sum(salary)
--------------------------------------
1  | Hamdi      | 100    | 300
-------------------------------------
2  | Abdo       | 100    |
-------------------------------------
3  | Haji       | 100    |

那么,我怎样才能得到这个总和?。

1 个答案:

答案 0 :(得分:0)

您需要指定要定位的数据库。

我也无法理解只有第一行才需要total_summary。请注意,下面的答案给出了所有行的结果。

这是Oracle数据库的代码(类似的方法适用于大多数现代RDBMS系统)

select id, first_name, salary,
sum(salary) over ()
from table1

在MySql中你需要使用这样的东西,因为它不支持over()子句

select id, first_name, salary,
  (select SUM(salary) from Table1) total
from Table1

编辑:仅限第一行。您可以初始化@row_number变量并通过递增和检查第一行来使用它

SET @row_number = 0;
select id, first_name, salary,
  case when (@row_number:=@row_number +1) = 1 then (select SUM(salary) from Table1)
  else null end as total
from Table1

类似地

SET @row_number = 0;
select id, first_name, salary,
  case when (@row_number:=@row_number +1) = 1 then (sum(salary) over ()) as total
  else null end total
from Table1