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 |
那么,我怎样才能得到这个总和?。
答案 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