我有一张表,其中存储了员工的月薪。
create table myemp
(
empno number ,
month number,
year number,
salary number
);
现在我需要一个查询来获得如下所示的结果
empno|month|Year|salary
0001 2 2016 10000
0001 3 2016 11000
0001 4 2016 12000
0001 -- ---- (10000+11000+12000)
0002 2 2016 15000
0002 3 2016 16000
0002 4 2016 15000
0002 -- ----(15000+16000+15000)
答案 0 :(得分:2)
我们可以使用oracle的Rollup函数设置总数和小计,如下所示
select empno,month,year,sum(salary) from myemp
GROUP BY year,ROLLUP (empno,month)
这里的empno和month是汇总函数,给出了总和和小计 empno和月组。
我希望这会有所帮助。
答案 1 :(得分:1)
你走了:
SELECT *
FROM (
(
SELECT empno, month, year, salary
FROM myemp
)
UNION ALL
(
SELECT empno, NULL AS month, NULL AS year, sum(salary)
FROM myemp
GROUP BY empno
)
) AS foo
ORDER BY empno, year IS NULL, year, month
答案 2 :(得分:0)
看起来像这样 选择姓氏,dept_no,工资, sum(salary)over(dept_no order by lastname)dept_total 来自myemp 按工资,姓氏排序;