建表语句:
create table salary (id NUMBER(5),
employee_id NUMBER(5),
amout NUMBER(10),
pay_date date);
insert into salary values(1, 1, 9000,TO_DATE('20170331','YYYYMMDD'));
insert into salary values(2, 2, 6000, TO_DATE('20170331','YYYYMMDD'));
insert into salary values(3, 3, 10000, TO_DATE('20170331','YYYYMMDD'));
insert into salary values(4, 1, 7000, TO_DATE('20170228','YYYYMMDD'));
insert into salary values(5, 2, 6000, TO_DATE('20170228','YYYYMMDD'));
insert into salary values(6, 3, 8000, TO_DATE('20170228','YYYYMMDD'));
create table employee4 (employee_id NUMBER(5),
department_id NUMBER(5));
insert into employee4 values(1, 1);
insert into employee4 values(2, 2);
insert into employee4 values(3, 2);
查询语句:
SELECT DISTINCT PAY_MONTH,DEPARTMENT_ID,CASE WHEN V1>V2 THEN 'HIGHER'
WHEN V1=V2 THEN 'SAME' ELSE 'LOWER' END COMPARISON
FROM (SELECT TO_CHAR(PAY_DATE,'YYYYMM')PAY_MONTH,
B.DEPARTMENT_ID,
AVG(A.AMOUT) OVER(PARTITION BY A.PAY_DATE,B.DEPARTMENT_ID) V1,
AVG(A.AMOUT) OVER(PARTITION BY A.PAY_DATE) V2
FROM SALARY A
JOIN EMPLOYEE4 B
ON A.EMPLOYEE_ID=B.EMPLOYEE_ID)C
ORDER BY PAY_MONTH DESC;