add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE PAY_IN_OUT
(
EMP_CODE NUMBER,
ATT_DATE DATE,
ITEM NUMBER
)
CREATE TABLE GAZZETED_DAYS
(
GAZZETED_DATE DATE NOT NULL,
DESCRIPTION VARCHAR2(40 BYTE)
)
insert into PAY_IN_OUT(ATT_DATE)
with dates as (
select date'2020-12-31'+level dt
from dual
connect by level <= 31
)
select dt
from dates
;
31 rows affected
UPDATE PAY_IN_OUT SET EMP_CODE = 100;
31 rows affected
UPDATE PAY_IN_OUT SET ITEM = floor(dbms_random.value(25, 40));
31 rows affected
INSERT ALL
INTO GAZZETED_DAYS(GAZZETED_DATE,DESCRIPTION)
VALUES (to_date('2021-01-09','yyyy-mm-dd'),'Its Holyday two')
INTO GAZZETED_DAYS(GAZZETED_DATE,DESCRIPTION)
VALUES (to_date('2021-01-13','yyyy-mm-dd'),'Its Holyday three')
INTO GAZZETED_DAYS(GAZZETED_DATE,DESCRIPTION)
VALUES (to_date('2021-01-16','yyyy-mm-dd'),'Its Holyday four')
INTO GAZZETED_DAYS(GAZZETED_DATE,DESCRIPTION)
VALUES (to_date('2021-01-21','yyyy-mm-dd'),'Its Holyday five')
INTO GAZZETED_DAYS(GAZZETED_DATE,DESCRIPTION)
VALUES (to_date('2021-01-26','yyyy-mm-dd'),'Its Holyday six')
SELECT * FROM dual;
5 rows affected
select * from GAZZETED_DAYS;
GAZZETED_DATE DESCRIPTION
09-JAN-21 Its Holyday two
13-JAN-21 Its Holyday three
16-JAN-21 Its Holyday four
21-JAN-21 Its Holyday five
26-JAN-21 Its Holyday six
select * from PAY_IN_OUT;
EMP_CODE ATT_DATE ITEM
100 01-JAN-21 36
100 02-JAN-21 35
100 03-JAN-21 36
100 04-JAN-21 32
100 05-JAN-21 34
100 06-JAN-21 29
100 07-JAN-21 38
100 08-JAN-21 27
100 09-JAN-21 31
100 10-JAN-21 33
100 11-JAN-21 31
100 12-JAN-21 36
100 13-JAN-21 31
100 14-JAN-21 36
100 15-JAN-21 29
100 16-JAN-21 31
100 17-JAN-21 35
100 18-JAN-21 31
100 19-JAN-21 31
100 20-JAN-21 31
100 21-JAN-21 33
100 22-JAN-21 34
100 23-JAN-21 39
100 24-JAN-21 25
100 25-JAN-21 36
100 26-JAN-21 30
100 27-JAN-21 32
100 28-JAN-21 32
100 29-JAN-21 25
100 30-JAN-21 36
100 31-JAN-21 32
select sum(item) from pay_in_out;
SUM(ITEM)
1007
DECLARE
a number;
B DATE;
CURSOR GZDT IS
SELECT GAZZETED_DATE FROM GAZZETED_DAYS
WHERE GAZZETED_DATE between date '2021-01-01' and date '2021-01-20';

begin
OPEN GZDT;
LOOP
FETCH GZDT INTO B;
EXIT WHEN GZDT%notfound;
END LOOP;
CLOSE GZDT;
SELECT SUM(ITEM) into a from pay_in_out
where --TO_CHAR(att_date,'DY', 'NLS_DATE_LANGUAGE=AMERICAN') NOT IN ('SUN')
ATT_DATE != B
AND att_date between date '2021-01-01' and date '2021-01-20'
AND EMP_CODE = 100;
dbms_output.put_line('the sum of item is :'||a) ;
end;
/
1 rows affected

dbms_output:
the sum of item is :622