0% found this document useful (0 votes)
21 views

Taski

Uploaded by

vahidliqahire
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views

Taski

Uploaded by

vahidliqahire
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 56

1)select * from customers_main_info;

update customers_main_info
set birth_day='05-may-1995',
maas=6000 --to_date
where id=15;

--rabite bank;

update customers_main_info
set maas=null;

select * from customers_main_info;


delete customers_main_info where id=67;

--din; data engineer etl=extract transform load --minayo +biznes


--data governance -cdo
ddl,dml,tcl-commit-data,rollback-data,savepoint;
--flashback
select * from customers_main_info;
delete from customers_main_info where id=25;
commit;
--ddl-avtomatik commit bas verir;

delete from customers_main_info where id=15;


create sequence customers_main_infosq; --commit
--kapital
select * from customers_main_info;
delete from customers_main_info where id=25;
insert into customers_main_info values
(45,'56hjgj',sysdate,6000,'Unibank',10);
%rowcount/100000=0 then commit;

----
insert into customers_main_info values
(60,'56hjgj',sysdate,6000,'Unibank',10);
savepoint sp1;
delete from customers_main_info where id=45;
savepoint sp2;
insert into customers_main_info values
(90,'56hjgj',sysdate,6000,'Unibank',10);
rollback to sp2;
--commit bas verdise savepoint silinir;
--commit bas verdise butun savepointler silinir
commit;
insert into customers_main_info values
(60,'56hjgj',sysdate,6000,'Unibank',10);
savepoint sp1;
delete from customers_main_info where id=45;
create sequence sq2; --commit
savepoint sp2;
insert into customers_main_info values
(90,'56hjgj',sysdate,6000,'Unibank',10);
rollback to sp1; --error
--btb

desc customers_main_info;

create table student_list (phone varchar2(40));


insert into student_list values (5557890);
select * from student_list;
boolean=true,false

(start-min)/maxvalue<=cache;

drop table adi;

ceil((maxvalue-minvalue)/abs(increment) <=

4) not null
check
unique
primary key=not null+unique
foreign key;
default 0; --constraint deyil

--inline outline

create table customers(


cust_id number primary key,
fincode varchar2(10) unique,
gender varchar2(10) check (gender in ('Q','K') ),
salary number not null
);

insert into customers (cust_id,fincode,gender,salary)


values (2,'1ghj789','K',1000);

insert into customers (cust_id,fincode,gender)


values (3,'1ghj789','K');

--null,1,2,3,null-error null,null,

alter table customers drop constraint SYS_C0011444;

create table customers1(


cust_id number constraint cust_id_pk primary key,
fincode varchar2(10) constraint fincode_uq unique,
gender varchar2(10) check (gender in ('Q','K') ),
salary number not null
);

create table customers2(


cust_id number,
fincode varchar2(10) constraint fincode_uq1 unique,
gender varchar2(10) check (gender in ('Q','K') ),
salary number not null,
primary key (cust_id)
);

insert into customers2 values (5,'79jjgjh','Q',2000);

update customers2 set gender='M';


--azerturk
create table customers3(
cust_id number,
fincode varchar2(10) constraint fincode_uq2 unique,
gender varchar2(10) check (gender in ('Q','K') ),
salary number not null,
not null (cust_id)
);
--not null hecvaxt outline ola bilmez!!!!
create table customers3(
cust_id number ,--default 0,
fincode varchar2(10),
gender varchar2(10) check (gender in ('Q','K') ),
salary number
);
--inline
alter table customers3 modify cust_id primary key; ----inline
alter table customers3 add unique(fincode); --outline

alter table customers3 add not null(gender); --abb olmaz


--cust_id 433797,branch
--create sozu ile yaranmir;

--20:50

create table customers5(


cust_id number ,
fincode varchar2(10),
branch number ,
gender varchar2(10) check (gender in ('Q','K') ),
salary number,
primary key(cust_id,branch) --complex primary key
);
--regexp_count()=7

insert into customers5 values (2,'5g',101,'K',2000);


select * from customers5;

100000-999999; 1--3000 1-3000 1-3000

unique,primary key-index;

primary key-foreign key

--1-100 101-146 147-200

create table customers6(


cust_id number ,
fincode varchar2(10) check (length(fincode)=7),
branch number ,
gender varchar2(10) check (gender in ('Q','K') ),
salary number
--complex primary key
);

insert into customers6(fincode) values ('78hjg909');


--rabite bank
drop table kredit;
create table currency1 (cur_id number primary key ,cur_name varchar2(10));
insert into currency1 values (944,'AZN');
insert into currency1 values (840,'USD');
select * from currency1;

create table kredit


(cont_id number,
mebleg number,
cur_id number,
constraint kredit_fk foreign key(cur_id) references currency1(cur_id));

insert into kredit values (123,2400,);


insert into kredit values (456,3000,840);
truncate table kredit;
insert into kredit values (896,4000,345);

select * from kredit;

create table kredit


(cont_id number,
mebleg number,
cur_id number,
branch_id number,
constraint kredit_fk foreign key(cur_id) references currency1(cur_id)) ,
constraint kredit2_fk foreign key(branch_id) references
branch(branch_id));
--on delete set null
--on delete cascade -her iksinden silir.

delete from currency1 where cur_id=944;

--deleted---0-1 1

alter table kredit add constraint kredit_fk foreign key(cur_id) references


currency1(cur_id));

--blob, clob,timastamp with timezone AZ US TR tipler- unique,primaery


key,foreign key ola bilmez;

--check icinde sysdate yazila bilmez;

--number(5,-2) 05 00 09 10

create procedure
insert a
select ....b;

5) --20-30% 10 -25% 2-15% 13%-20% 4000net+ 2000 nerimanov unvan soft-


30 hard 90dek <= puna mehkeme
min 15 column +constraint --sysdate 0 2372 check-de sysdate yazila bilmez;
--30il

--255; max30 18+ maxadin255

currency,branch,customer,-parent dimension
transaction foreign key currency,branch,customer-child table; fact

--ADJ MXD SM
--0559806032,0506789587
customer_id_code
1. 4567
1. 6789

nomreler
1.vusale.1
2.vusale.2;

--0559806032,0503034776,0124228217
[email protected]

unused column;

6milyrd xy-column drop;


alter table tablename drop column adi; 1saat;

alter table tablename set unused column adi;

create table cust (id number,name varchar2(10),salary number);

select * from cust;


alter table cust set unused column salary; --1saniye 1saniye
alter table cust drop unused columns; -1; -- 20column 19ok 34-33ok

hecbir halda geri qayitmir;

alter table cust add salary number;

drop index adi online;

--plsql 3k;

5 dwh bi data gover


sql-3ay+pl-1ay 4 ay

--250usd
--python 4 ders

--1dq

--5k 1000
select..
--500 800-1200 500
--800 net 1300
-- btb gross net; finkode
6) --pasadaki eve task:
--'anar eliyev asif qizi' instsr substr
--task 2-3-4-5
--il erzinde olan 3cu gunleri goster afb
--il erzinde olan ay sonlari cixart
-- 2 tarix arasinda olan gunleri cixart
-- 2 tarix arasinda olan saturday gunlerini cixart

select sqrt(81) from dual;


select greatest(5,16,34,56,4,2) from dual;
select least(5,16,34,56,4,2) from dual;

select greatest(gecikme_esasborc,gecikme_cerime_borcu,gecikme_faizborcu)
from dual;

select power(3,2) from dual;

1)selectde col his ve where-de


2)insertun values-da
3) updatein set his-de ve where
4) delete in where;

single row=scalar =built in function;


a) char b)number c)date;

select upper(customer_name),lower(customer_name),initcap(customer_name)
from loan_contract;

select * from loan_contract where LOWER(customer_name)='anar';


select customer_name||' / '||loan_sector||' ' ||currency_id from
loan_contract;
select concat(concat(customer_name,' / '),loan_sector) from loan_contract;

select translate(customer_name,'ua','ae') from loan_contract;


--r
select lpad('oracle',9) from dual;
select lpad('oracle',4) from dual;
select lpad('oracle',10,'.') from dual;

select ltrim(' oracle') from dual;


select ltrim('ooooracle','o') from dual;
select ltrim('123123oracle123','123') from dual; --abb

select replace('vusala','a','e') from dual;

select translate('vu sala',' ',';') from dual;


--task
select length('oracle') from dual;
select vsize('oracle') from dual;
--instr substr

select * from transaction;


--AZ93AZEN 41010 422456 944 105 001

select substr(acct_no_dt,14,6) from transaction;


select substr(acct_no_dt,20,3) from transaction;

select substr('anar Babayev',7) from dual;

--hello hello hello vyusale eq2345 hello


--hello eq2345 hello hello vyusale hello

select instr('vusale babayeva',' ',1) from dual;

select substr('anar babayeva',instr('anar babayeva',' ',1)) from dual;


--expressbank
select substr('hello eq2345 hello hello vyusale hello',
instr('hello eq2345 hello hello vyusale hello','eq',1),6) from dual;

select instr('hello eq2345 hello hello vyusale hello',' ',2) from


dual;

--select reverse('vusale') from dual;

--number
select mod(11,4) from dual;
select remainder(11,4) from dual; --8 12

select remainder(18,5) from dual; --15 20


select remainder(18,5) from dual;
select remainder(23,6) from dual; --18 24

select trunc(567.6789,2) from dual;


select ceil(567.1) from dual;
select floor(567.9) from dual;

--date
--level
select rownum from dual connect by rownum <=10;

select extract(month from act_date),act_date from loan_contract;


select extract(year from act_date),act_date from loan_contract;
select extract(day from act_date),act_date from loan_contract;

select trunc(sysdate,'MM') from dual;


select trunc(sysdate,'YYYY') from dual;

select round(sysdate,'MM') from dual;


select round(sysdate+100,'YYYY') from dual;
select to_date('31-dec-2023','dd-mon-yyyy')+level from dual connect by
level <=366;

select next_day('22-apr-2024','saturday') from dual;


select last_day('22-apr-2024') from dual;
select add_months('22-apr-2024',-6) from dual;
select months_between('22-apr-2024','27-feb-2023') from dual;

select last_day(act_date),act_date from loan_contract;

select numtoyminterval('27','month') from dual;


select numtodsinterval('27','hour') from dual;

/*
CASE
WHEN a.act_date >= TRUNC (a.act_date, 'MM')
AND a.act_date < LAST_DAY (a.act_date)
THEN
'Daily'
WHEN MOD (EXTRACT (MONTH FROM a.act_date), 12) = 0
THEN
'Year'
WHEN MOD (EXTRACT (MONTH FROM a.act_date), 3) = 0
THEN
'Quarter'
WHEN a.act_date = LAST_DAY (a.act_date)
THEN
'Monthly'
ELSE
'Daily'
END
AS period,

*/

7) --pasadaki eve task:


--'anar eliyev asif qizi' instsr substr
--task 2-3-4-5
--il erzinde olan 3cu gunleri goster afb
--il erzinde olan ay sonlari cixart
-- 2 tarix arasinda olan gunleri cixart
-- 2 tarix arasinda olan saturday gunlerini cixart

select sqrt(81) from dual;


select greatest(5,16,34,56,4,2) from dual;
select least(5,16,34,56,4,2) from dual;
select greatest(gecikme_esasborc,gecikme_cerime_borcu,gecikme_faizborcu)
from dual;

select power(3,2) from dual;

1)selectde col his ve where-de


2)insertun values-da
3) updatein set his-de ve where
4) delete in where;

single row=scalar =built in function;


a) char b)number c)date;

select upper(customer_name),lower(customer_name),initcap(customer_name)
from loan_contract;

select * from loan_contract where LOWER(customer_name)='anar';


select customer_name||' / '||loan_sector||' ' ||currency_id from
loan_contract;
select concat(concat(customer_name,' / '),loan_sector) from loan_contract;

select translate(customer_name,'ua','ae') from loan_contract;


--r
select lpad('oracle',9) from dual;
select lpad('oracle',4) from dual;
select lpad('oracle',10,'.') from dual;

select ltrim(' oracle') from dual;


select ltrim('ooooracle','o') from dual;
select ltrim('123123oracle123','123') from dual; --abb

select replace('vusala','a','e') from dual;

select translate('vu sala',' ',';') from dual;


--task
select length('oracle') from dual;
select vsize('oracle') from dual;

--instr substr

select * from transaction;


--AZ93AZEN 41010 422456 944 105 001

select substr(acct_no_dt,14,6) from transaction;


select substr(acct_no_dt,20,3) from transaction;

select substr('anar Babayev',7) from dual;

--hello hello hello vyusale eq2345 hello


--hello eq2345 hello hello vyusale hello

select instr('vusale babayeva',' ',1) from dual;


select substr('anar babayeva',instr('anar babayeva',' ',1)) from dual;
--expressbank
select substr('hello eq2345 hello hello vyusale hello',
instr('hello eq2345 hello hello vyusale hello','eq',1),6) from dual;

select instr('hello eq2345 hello hello vyusale hello',' ',2) from


dual;

--select reverse('vusale') from dual;

--number
select mod(11,4) from dual;
select remainder(11,4) from dual; --8 12

select remainder(18,5) from dual; --15 20


select remainder(18,5) from dual;
select remainder(23,6) from dual; --18 24

select trunc(567.6789,2) from dual;


select ceil(567.1) from dual;
select floor(567.9) from dual;

--date
--level
select rownum from dual connect by rownum <=10;

select extract(month from act_date),act_date from loan_contract;


select extract(year from act_date),act_date from loan_contract;
select extract(day from act_date),act_date from loan_contract;

select trunc(sysdate,'MM') from dual;


select trunc(sysdate,'YYYY') from dual;

select round(sysdate,'MM') from dual;


select round(sysdate+100,'YYYY') from dual;

select to_date('31-dec-2023','dd-mon-yyyy')+level from dual connect by


level <=366;

select next_day('22-apr-2024','saturday') from dual;


select last_day('22-apr-2024') from dual;
select add_months('22-apr-2024',-6) from dual;
select months_between('22-apr-2024','27-feb-2023') from dual;

select last_day(act_date),act_date from loan_contract;

select numtoyminterval('27','month') from dual;


select numtodsinterval('27','hour') from dual;
/*
CASE
WHEN a.act_date >= TRUNC (a.act_date, 'MM')
AND a.act_date < LAST_DAY (a.act_date)
THEN
'Daily'
WHEN MOD (EXTRACT (MONTH FROM a.act_date), 12) = 0
THEN
'Year'
WHEN MOD (EXTRACT (MONTH FROM a.act_date), 3) = 0
THEN
'Quarter'
WHEN a.act_date = LAST_DAY (a.act_date)
THEN
'Monthly'
ELSE
'Daily'
END
AS period,

*/

8) --pasadaki eve task:


--'anar eliyev asif qizi' instsr substr
--task 2-3-4-5
--il erzinde olan 3cu gunleri goster afb
--il erzinde olan ay sonlari cixart
-- 2 tarix arasinda olan gunleri cixart
-- 2 tarix arasinda olan saturday gunlerini cixart

select sqrt(81) from dual;


select greatest(5,16,34,56,4,2) from dual;
select least(5,16,34,56,4,2) from dual;

select greatest(gecikme_esasborc,gecikme_cerime_borcu,gecikme_faizborcu)
from dual;

select power(3,2) from dual;

1)selectde col his ve where-de


2)insertun values-da
3) updatein set his-de ve where
4) delete in where;

single row=scalar =built in function;


a) char b)number c)date;
select upper(customer_name),lower(customer_name),initcap(customer_name)
from loan_contract;

select * from loan_contract where LOWER(customer_name)='anar';


select customer_name||' / '||loan_sector||' ' ||currency_id from
loan_contract;
select concat(concat(customer_name,' / '),loan_sector) from loan_contract;

select translate(customer_name,'ua','ae') from loan_contract;


--r
select lpad('oracle',9) from dual;
select lpad('oracle',4) from dual;
select lpad('oracle',10,'.') from dual;

select ltrim(' oracle') from dual;


select ltrim('ooooracle','o') from dual;
select ltrim('123123oracle123','123') from dual; --abb

select replace('vusala','a','e') from dual;

select translate('vu sala',' ',';') from dual;


--task
select length('oracle') from dual;
select vsize('oracle') from dual;

--instr substr

select * from transaction;


--AZ93AZEN 41010 422456 944 105 001

select substr(acct_no_dt,14,6) from transaction;


select substr(acct_no_dt,20,3) from transaction;

select substr('anar Babayev',7) from dual;

--hello hello hello vyusale eq2345 hello


--hello eq2345 hello hello vyusale hello

select instr('vusale babayeva',' ',1) from dual;

select substr('anar babayeva',instr('anar babayeva',' ',1)) from dual;


--expressbank
select substr('hello eq2345 hello hello vyusale hello',
instr('hello eq2345 hello hello vyusale hello','eq',1),6) from dual;

select instr('hello eq2345 hello hello vyusale hello',' ',2) from


dual;

--select reverse('vusale') from dual;

--number
select mod(11,4) from dual;
select remainder(11,4) from dual; --8 12

select remainder(18,5) from dual; --15 20


select remainder(18,5) from dual;
select remainder(23,6) from dual; --18 24

select trunc(567.6789,2) from dual;


select ceil(567.1) from dual;
select floor(567.9) from dual;

--date
--level
select rownum from dual connect by rownum <=10;

select extract(month from act_date),act_date from loan_contract;


select extract(year from act_date),act_date from loan_contract;
select extract(day from act_date),act_date from loan_contract;

select trunc(sysdate,'MM') from dual;


select trunc(sysdate,'YYYY') from dual;

select round(sysdate,'MM') from dual;


select round(sysdate+100,'YYYY') from dual;

select to_date('31-dec-2023','dd-mon-yyyy')+level from dual connect by


level <=366;

select next_day('22-apr-2024','saturday') from dual;


select last_day('22-apr-2024') from dual;
select add_months('22-apr-2024',-6) from dual;
select months_between('22-apr-2024','27-feb-2023') from dual;

select last_day(act_date),act_date from loan_contract;

select numtoyminterval('27','month') from dual;


select numtodsinterval('27','hour') from dual;

/*
CASE
WHEN a.act_date >= TRUNC (a.act_date, 'MM')
AND a.act_date < LAST_DAY (a.act_date)
THEN
'Daily'
WHEN MOD (EXTRACT (MONTH FROM a.act_date), 12) = 0
THEN
'Year'
WHEN MOD (EXTRACT (MONTH FROM a.act_date), 3) = 0
THEN
'Quarter'
WHEN a.act_date = LAST_DAY (a.act_date)
THEN
'Monthly'
ELSE
'Daily'
END
AS period,

*/

9) select instr('Vahidli Qahire Tehran qizi',' ',1,1) from dual;

select ('Vahidli Qahire Tehran qizi'),substr ('Vahidli Qahire Tehran


qizi',1,
instr('Vahidli Qahire Tehran qizi',' ',1,1)),

--substr ('sddv sfbtgfb fgb',a,b) from dual;

substr ('Vahidli Qahire Tehran qizi', instr('Vahidli Qahire Tehran qizi','


',1,1),
instr('Vahidli Qahire Tehran qizi',' ',1,2)- instr('Vahidli Qahire Tehran
qizi',' ',1,1)),

substr ('Vahidli Qahire Tehran qizi', instr('Vahidli Qahire Tehran qizi','


',1,2),
instr('Vahidli Qahire Tehran qizi',' ',1,3)- instr('Vahidli Qahire Tehran
qizi',' ',1,2)),

substr ('Vahidli Qahire Tehran qizi', instr('Vahidli Qahire Tehran qizi','


',1,3),
length('Vahidli Qahire Tehran qizi')- instr('Vahidli Qahire Tehran qizi','
',1,3-1)) from dual;

--regexp_substr

--3-cu gunlerin tarixleri


SELECT NEXT_DAY('01-JAN-2024', 'wednesday') + (LEVEL - 1) * 7
FROM dual
CONNECT BY NEXT_DAY('01-JAN-2024', 'wednesday') + (LEVEL - 1) * 7
<= TO_DATE('31-DEC-2024', 'DD-MON-YYYY');

SELECT NEXT_DAY('01-JAN-2024', 'wednesday') + (LEVEL - 1) * 7


FROM dual
CONNECT BY LEVEL<=52;

--ay sonlari
SELECT LAST_DAY(TO_DATE('23-' || LEVEL || '-2024', 'DD-MM-YYYY'))
FROM dual
CONNECT BY LEVEL <= 12;

--select '12'||'hello'||'23' from dual;

select level from dual connect by level<= 365;


-- tarixler arsindaki gunler
SELECT TO_DATE('01-jan-2024','dd-mon-yyyy') + LEVEL - 1
FROM dual
CONNECT BY LEVEL <= (TO_DATE('01-may-2024','dd-mon-yyyy') - TO_DATE('01-
jan-2024','dd-mon-yyyy') + 1);

--tarixler arasi gunlerin saturdayleri


SELECT NEXT_DAY('01-JAN-2024', 'saturday') + (LEVEL - 1) * 7
FROM dual
CONNECT BY NEXT_DAY('01-JAN-2024', 'saturday') + (LEVEL - 1) * 7 <=
TO_DATE('01-may-2024', 'dd-mon-yyyy');

select
last_day(add_months(to_date('01-01-2024', 'DD-MM-YYYY'), level - 1)) as
last_day_of_month
from dual
connect by level <= 12;

select * from loan_contract where rownum<=5 order by amount_azn desc;


--12c+
select * from loan_contract offset 3 rows fetch first 5 rows only;
select * from loan_contract fetch next 5 row only;

--abb 1ci merhele


select * from loan_contract offset -3 rows fetch first 5 rows only;

select * from loan_contract order by id fetch 50 percent rows only;


400,400,300,300,
select * from loan_contract fetch 50 percent rows with ties;
400,400,300,300,300,300,

400,400,300,300,300,300,200,100
select * from loan_contract limit 10;

select * from loan_contract where currency_id='&valyuta' and


filial_code='&filial';

select &column from loan_contract;

create view azad2 as


select * from loan_contract where currency_id=944;

--6-7k; 4k;

10) --window
min,max,count,avg,sum,-null u saymmir count(*)-sayir;

select max(amount_azn),sum(amount_azn)
from dic_loan;
select count(amount_azn),count(*)
from loan_contract;
select * from dic_loan;

select currency_id,branch_id,sum(amount_azn)
from dic_loan group by currency_id,branch_id;

select currency_id,branch_id,sum(amount_azn)
from dic_loan group by currency_id,branch_id;

select branch_id,trunc(avg(amount_azn))
from dic_loan group by branch_id having trunc(avg(amount_azn))>=2000;

select id,name,rowid from employee order by id asc;


insert into employee values (2,'Anderson');

select count(*),id,name from employee group by id,name having


count(*)>=2;

delete from employee where rowid not in (


select max(rowid) from employee group by id,name );

delete from employee where rowid not in


('AAASUkAAEAAAAJ1AAD','AAASUkAAEAAAAJ1AAF',
'AAASUkAAEAAAAJ1AAA','AAASUkAAEAAAAJ1AAK','AAASUkAAEAAAAJ1AAE','AAASUkAAEA
AAAJ1AAG',
'AAASUkAAEAAAAJ1AAC'
);

select max(rowid),id,name from employee group by id,name;


select id,name,rowid from employee order by id asc;

select count(amount_azn),count(*) from loan_contract;


select * from loan_contract; --mkl

outline; 16,68;
30,31,32,33,34;
6000-800=5200 -300;

1,2,4,13-abb

avg=20/4=5
1-5=-4
2-5=-3
4-5=-1
13-5=8
16+9+1+64=90 sqrt(90/4)=4.5 ;
n-1 sample
population n;
--stddev
mean-avg;
avg 800 > mod 345
--345,345,345,700,460,900,1500 mod:345

25sual 90
--cross-

345,500,200,700,460,900,2500,1500
200,345,460,500,700,900,1500,2500 600median
200,345,460,500,700,900,1500, 500median;

10k expressbanka
gulare 2000 23%
emil 8000 14%;
10m;
correlyasiya -1<=x<=1 ters duz 0.4 0.9;
select corr(region,amount_azn)
from dic_loan;

select a.*,ntile(6) over (order by amount_azn) from dic_loan a;

11) rank,dense_rank,row_number(),first_value,last_value
lead,lag,listagg,nth_value,pivot;
;

anar 300
ayten 300
babek 250
aygun 200
vusale 200
nigar 150;
--with

select customer_name,amount_azn,interest_rate,
first_value(interest_rate) ignore nulls
over (order by interest_rate asc)
from loan_contract;
--exprersbank
select customer_name,salary,depid,
first_value(salary) ignore nulls
over (partition by depid order by salary asc)
from employee;

select * from loan_contract;


select row_number() over(order by amount_azn desc),a.* from dic_loan a;
select rank() over(order by amount_azn desc),a.* from dic_loan a;

select * from
(select dense_rank() over(partition by LOAN_sector order by amount_azn
desc) as myrank ,
v.* from loan_contract v where amount_azn is not null )
where myrank<=3 ;

create table emp (empno number,ename varchar2(20),salary number,depid


number);

--lag,lead,

select empno,ename,salary,lag(salary,1,0) over (order by salary ),


salary-lag(salary,1,0) over (order by salary )
from emp;

select empno,ename,salary,lead(salary,1,0) over (order by salary ) from


emp;

--group by
select distinct currency_id, listagg(contract_id,'/') within group
(order by amount_azn desc) over (partition by currency_id )
from loan_contract ;

select currency_id, listagg(contract_id,'/') within group (order by


amount_azn)
from loan_contract group by currency_id;

select * from emp;


--nth_value
select distinct depid ,nth_value(salary,2)
over (partition by depid order by salary desc
range between unbounded preceding and unbounded following
) from emp;

--pivot
select * from
(select currency_id,filial_code,amount_azn from loan_contract)
pivot (
sum(amount_azn) for currency_id in (944,840,826,978,643,756,392)
);
like % _ _;

12) --bkrs ssrs 1200 temporary


--on commit preserve rows on commit delete rows
create global temporary table today_sales_report
( id number,
name varchar2(20),
tran_date date
) on commit preserve rows;

insert into today_sales_report


select ....;
insert into today_sales_report values (1,'test',sysdate);
select * from today_sales_report;

create global temporary table today_sales_report$TT2


( id number not null,
name varchar2(20) unique,
tran_date date default '23-may-2024'
) on commit delete rows;

insert into today_sales_report1 values (1,'test',sysdate);


select * from today_sales_report1;
commit;

select * from st_xf_dwh.transaction_account_un;

select * from rs.database_accumulate_credit_new;

create or replace public synonym schema.ad for rs.object_name;

create or replace public synonym tarix for orcl.dic_dim_time;

select * from azad;


--select * from dic_dim_time tarix;
select * from tarix;
select a.*,upper() from dic_dim_time a;

can be created:
table,view,sequence,procedure,function,package,mv,synonym;

x.azad
a.azad
b.azad

create or replace public synonym alpha for vusale.alpha_numeric2;

--table,public synonym
privaTE ;

conversion,case,decode,null funksiyalar-azerturk,vtb--4cugun

13) --or and 78 63% 50%


select * from loan_contract;
select * from currency;
select * from branch;

kind of joins:

equijoin-mutleq eyni adda column olmalidir


non-equijoin-<,>,<=,>= olmalidir
inner
outer-left,right,full
natural join serti olmur
self her 2 teref eyni table olmalidir
cross-abb 6-8 48;

select * from currency;


select a.*,b.cur_Name from loan_contract a join currency b
on a.currency_id=b.currency_id;

mb_logged_user inner join credit_database_accumlate_new;

select a.*,b.cur_Name from loan_contract a left outer join currency b


on a.currency_id=b.currency_id;

select a.*,b.cur_Name from loan_contract a right outer join currency b


on a.currency_id=b.currency_id;

select a.*,b.cur_Name from loan_contract a full outer join currency b


on a.currency_id=b.currency_id;

select a.*,b.cur_Name from loan_contract a ,currency b


where a.currency_id=b.currency_id;

select a.*,b.cur_Name from loan_contract a ,currency b


where a.currency_id(+)=b.currency_id;
select a.*,b.cur_Name from loan_contract a ,currency b
where a.currency_id=b.currency_id(+);
--full

select * from loan_contract inner join currency


using(currency_id); --equijoin-rabite

default-natural join - innerdir


select * from loan_contract natural left join currency ;

find out employees whoose salaries are greater than the salaries of their
managers;
--self,inner join,non-equijoin
select w.*,m.*,w.salary-m.salary as dif from employee_manager w,
employee_manager m
where w.manager_id=m.emp_id
and w.salary>m.salary;

create table abb_1 (id number);


insert into abb_1 values (1);
insert into abb_1 values (2);
insert into abb_1 values (3);
select * from abb_1;

create table abb_2 (id varchar2(5));


insert into abb_2 values ('a');
insert into abb_2 values ('b');
insert into abb_2 values ('c');
select * from abb_2;

select * from abb_1 cross join abb_2 ;

1 2
d f g h:
1d 1f 1g 1h 2d 2f 2g 2h;

fact dimension ;
'';
union all ve union ;

order by
--dense_rank rank; ABB

100 200 null null


avg()-? 150

avg(nvl(null,0)) 300/4=75;

14) --select * from loan_contract limit 10;

select a.*,
case
when contract_id like 'PC%' then 'plastik kart'
when contract_id like 'MD%' then 'qarantiya'
when contract_id like 'LD%' then 'kredit' else 'diger'
end as tip
from loan_contract a;

select a.*,
case currency_id
when 944 then 'azn'
when 840 then 'usd'
else 'diger'
end as tip
from loan_contract a;

select a.*,
case
when currency_id=944 then 'azn'
when currency_id=840 then 'usd'
else 'diger'
end as tip
from loan_contract a;

select a.*,
decode(currency_id,
944,'azn',
840,'usd',
673,'TL',
'diger') from loan_contract a;

select a.*,
case
when contract_id like 'PC%' then 'plastik kart'
when contract_id like 'MD%' then 'qarantiya'
when contract_id like 'LD%' then 'kredit' else 'diger'
end as tip,
case
when amount_azn between 0 and 1000 and currency_id=944 then '0-1000 azn'
when amount_azn between 1000.01 and 50000 and currency_id=944 then '1000-
50000 azn'
when amount_azn between 0 and 5000 and currency_id=840 then '0-5000 usd'
when amount_azn between 5000.01 and 200000 and currency_id=944 then '5000-
200000 usd'
else 'diger' end as tip2
from loan_contract a;

--upper
select act_date,contract_id,upper(customer_name) from loan_contract;
select azad.*,upper(customer_name) from loan_contract azad;

select a.act_date,b.mebleg from azad a,vusale b;

--conversion
--implicit explicit
--to_date,to_number,to_char
select '5' from dual;

select to_NUMBER('$17.89','$999.99') from dual;


select to_char(198,'$999.99') from dual;
select to_date(sysdate,'dd.mon.yyyy') from dual;
select to_char(sysdate,'dd-mon-yyyy hh12:mi:ss pm day month year') from
dual;
select to_char(sysdate,'dd-mon-yyyy hh24:mi:ss am') from dual;

select cast (coladi as tipi) from table;

select cast(currency_id as varchar(100)) from loan_contract;


select to_number(currency_id) from loan_contract;

--bug
--nvl,nvl2,nullif,coalesce;
--nvl(e1,e2) nvl2(e1,ifnotnull-a,null-b)
--nullif (a,b) null na coalesce(null,null,6,7,null,9,2)=6

select a.*,nvl(amount_azn,0) from loan_contract a;

800
800
800
null
avg=800;
avg(nvl(amount_azn,0))=600;

5milyard 4.8milyard
SELECT * from
(select nullif(a.mebleg,b.mebleg) as mycol from table) where mycol is not
null;
select a.*,
nvl2(amount_azn,'completed','n/a') as mycol
from loan_contract a;
select * from currency;

select a.currency_id,b.id,nullif(a.currency_id,b.id) as mytip


from loan_contract a left join currency b on a.currency_id=b.id

15) --set operator-union,union all,intersect,minus, intersect


all,minus all;

--union all-dublicate goturur union-ignore ziraat;


--ctas
create table loan_azn as
select * from loan_contract where currency_id=944;

create table loan_usd as


select * from loan_contract where currency_id=840;

select * from loan_azn


union
select * from loan_usd
;

select act_date,amount_azn from loan_azn


union all
select null,amount_azn from loan_usd
;

select * from loan_azn


union all
select * from loan_contract
;

select * from loan_azn


intersect
select * from loan_contract
;

select * from loan_contract


minus
select * from loan_azn
;

select act_date,amount_azn from loan_azn


intersect
select act_date as tarix,amount_azn from loan_contract
union
select act_date as date_,amount_azn from loan_usd order by 1;

fact foreign key-dimension table-primary key;

--view,with ,subquery
16) create table phone (phone_numbers varchar2 (40) );
insert into phone values('9940554667788');
insert into phone values('+9940554667788');
insert into phone values('055-466-77-88');
insert into phone values('+994-055-466-77-88');
insert into phone values('sabina055-4667788');
select * from phone;
Select concat ('+994',ltrim(regexp_replace
(phone_numbers, '[^0-9]+', ''),'994'))as phonenums
FROM phone;

Select regexp_replace(phone_numbers, '[^0-9]+', '') as phonenums


FROM phone;

SELECT REGEXP_SUBSTR('Babayeva Vusale Cahid qizi','[[:alpha:]]+',1,LEVEL)


FROM DUAL
CONNECT BY LEVEL <= REGEXP_COUNT('Babayeva Vusale Cahid qizi',' ')+1 ;

--TASK 9.2

SELECT '+994'||
REGEXP_SUBSTR (REGEXP_REPLACE(phone_numbers,'\D'),'\d{9}$') FROM phone ;

Select regexp_substr
('Orujova Sabina Ramin qizi','[[:alpha:]]+',1,level) as reg_sub
from dual connect by level <= regexp_count('Orujova Sabina Ramin qizi', '
')+1 ;

select add_months(trunc(sysdate,'mm'),-1) from dual;

create table phone_numbers(


numbers varchar2(22)
);

insert into phone_numbers values('+944-070-744-19-00');


insert into phone_numbers values('+944-0707441900');
insert into phone_numbers values('+944 070 744 19 00');
insert into phone_numbers values('+944 070 744 1900');
insert into phone_numbers values('94470 744 1900');
insert into phone_numbers values('944707441900');
insert into phone_numbers values('508441900');
insert into phone_numbers values('558441900');
insert into phone_numbers values('Turan0558441900');

SELECT '+994 ' || SUBSTR(REGEXP_REPLACE(numbers, '\D', ''),


regexp_instr(REGEXP_REPLACE(numbers, '\D', ''),'7|5',1)) AS
formatted_number
FROM phone_numbers;

17) /*1) single row -- exists semijoin


2)multiple column
3)multiple row
4)corralated -standalone olmayan
5)scalar =1 row 1 column;

harda istifade oluna biler:


1) update-in set his-de ve wherede
2) selectin col- his-de ve where
3) insertin select -inde
4) delete in yalniz where-de;
*/
--25% den asagi olan kreditlerin avg-den boyuk olan kreditleri cixart;
select * from dic_loan where amount_azn>2507;
select trunc(avg(amount_azn)) from dic_loan where interest_rate<=25;

select * from dic_loan where amount_azn>(


select trunc(avg(amount_azn)) from dic_loan where interest_rate<=25) ;

select * from dic_loan where (amount_azn,x)>(


select trunc(avg(amount_azn)),y from dic_loan where interest_rate<=25);

select * from dic_loan where currency_id in (select id from currency);

select * from dic_loan where currency_id in (944,840,100);

select * from dic_loan where cust_id in (select cust_id from ubank);

select customer_id,value_date,currency_id,
(select name from currency b where a.currency_id=b.id)
from dic_loan a;

select a.*,b.name from dic_loan a , currency b


where a.currency_id=b.id;

--inner join-exists

select * from loan_contract a where exists


(select * from currency b where a.currency_id=b.id );

select * from loan_contract a where not exists


(select * from currency b where a.currency_id=b.id );

--existys de erroru true kimi qebul edir;


select * from dual where exists (select * from dual where 1>2);
select * from dual where exists (select * from dual where 1<2);
select * from dual where exists (select 1/0 from dual );
/*
subquery-inline view
exists-semijoin
*/
--any= some=or, all=and
select * from dic_loan where amount_azn>all(
select trunc(avg(amount_azn))
from dic_loan where interest_rate<=25 group by interest_rate) ;

select * from dic_loan where amount_azn>any(


select trunc(avg(amount_azn))
from dic_loan where interest_rate<=25 group by interest_rate) ;

--with

18) --with
with azad as
(select a.*,dense_rank()over (order by amount_azn) as myrank
from dic_loan a )
select * from azad where myrank<=3;
with a1 as (),
a2 as n();

drop table azad;

with azad as
(select * from dic_loan a inner join branch b on a.branch_id=b.id)
select * from azad x left join currency c on x.currency_id=c.id;
select * from azad;

--any=some=or, all-and

--pl-instead of trigger
create or replace view vusala as
select CONTRACT_ID,value_date,amount_azn,b.name
from dic_loan a inner join branch b on a.branch_id=b.id
inner join currency c on a.currency_id=c.id;

--dml ede bilersizmi?

select * from vusala;

create or replace view sumcredit as


select sum(amount_azn) as cem,currency_id
from dic_loan group by currency_id;

select * from vusala;

create or replace view sumcredit2 as


select amount_azn||' '||contract_Id as concat2
from dic_loan;

alter view adi compile;


--invalid

create or replace force view babayeva2 as


select * from elxan;

--with check option

create or replace view branch_vw as


select * from branch where id>100 with check option;

select * from branch_vw;


insert into branch_vw values (150,'Xetai');

create or replace view branch_vw as


select * from branch where id>100 with read only;

--invisible column

create table employee2(


id number,
name varchar2(30),
emp$salary number invisible) ;

select * from employee2; --id,name


select id,emp$salary from employee2; --gorunecek

create or replace view test_vw as


select * from employee2;

select * from test_vw;

--flashback ddl rollback-dml


drop table dic_loan purge;
flashback table dic_loan to before drop;
select * from dic_loan;
--foreign key,trigger,access de geri qayitmair;
select * from user_recyclebin;

purge user_recyclebin;
--force

alter session set user_recyclebin=on;


alter session set user_recyclebin=off;

/*
1 1
2 2
3 3
6 4
7
10
*/

19) 1) customer cedvelinde gender,name ve birthday columna hansi tip inde


xyaradarsan ve niye
2) index novunu nece deyisersen
3) index tesir etmeyen where sertleri hansilardir
4) primary key ve unique constraint-nin yaratdigi indexsi nece silersen
5) joinlerin hansi novleri var ve using hansi join novunde islenir
6) exists ve inner join ferqi nedir
7) not in ve not exists ferqi
8) table d aforeign key yoxdursa join yaza bilerem? biliremse onda niye
foreign key yaradiriq
9) niye table da primary key olanda suretlidir?
10) tabledan dublicate data nece taparsan nece silersen
11) table a en son olunan row u nece taparsan
12) merge nedir
13) 1 table - eyni eyni anda 3-4 table a nece insert edersen
14) subquery de any,all,some nedir
15) eyni anda ddl ve dml granti eyni anda verile bilermi
16) bazada her obyektden nece eded oldugunu nece taparsan
17) virtual column nedir, + ve - terefleri nedir
18) surragate key nedir ve nece novu var
19) temporary table nedir ve hansi novleri var
20) delete ve truncate ferqi
21) rollback ve flashback ferqi
22) set opratorlari hanislardir ve hansi ne isi gorur
23) regular expressionla ede bilecek numune?
24) ad soyad ataadi umumidirse nece bolersen
25) ilin evvelidne ilin sonuna tarixleri nece cixararsan
26) kimilaytiv sum nedir
27) grouping set nedir
28) having ve where ferqi hansidir
29) fact ve dimension table nedir
30) with,subquery,view ferqi nedir
31) 5 ay evvele qayidan funksiya hanisidir
32) analitik funksiyalar hansilardir
33) her departamentde 3cu en yuxari maasi tap
34) rank ve dense_rank ferqi
35) nevaxt rownumber nevaxt rank veya dense_rank isledersen
35) group by ve partition ferqi nedir
36) her valyuta uzre top 3 krediti tap
37) flashback edende geri qayitmayan obyektler hansidir
38) select * from where exists (select 1/0 from dual) result nedir?
39) table kopyasini dolu ve bos halda nece yaradarsan
40) hansi obyektdirki onu yaratmaq ucun elave granta ehtiyac yoxdur
41) reverse olmadan sozu tersden nece oxuyarsan
42) ededn reqemleri cemin nece taparsan
43) union ve union all ferqi ve hansi daha suretlidir
44) null funksiyalari hansilardir
45) count ve count(*) ferqi
46) avg coxdur ya mode?
47) sttdev,variance nedir
48) 1 1 1 3 3 null null : where id<>1 yazsam result nedir?
49) viewlarda with check option nedir
50) schemalarin novleri hansilardir
51) normallasma qaydalarinin novleri
52) niye aqlias i where -de veya group by da yazanda errordur amma order
by da yox
53) insert; savepoint sp1; truncate ; savepoint sp2; rollback ; ve
rollback to sp1; result nedir?
54) sequeence de start with ve minvalue ferqi nedir
55) hansi tip error cixarsa sequence de id novbeti id-ye kecid edir
56) namespace qaydasi nedir
57) 1 tableda 10 column var . 4 columnun yalniz datasin nece silersen
58) a table=5 row b table=10 row cross joine tsem nece setir qayidacaq
59) sutun uzre-max,min bes setir uzre max ve min qiymeti nece taparsan
60) distinct sozu evezine unique value getirmek ucun ne yazarsan
61) select gec isleyirse onu suretlendirmek ucun nelere baxarsan
62) hint,explain plan nedir
63) sekil fayl saxlaya bilen data type hansidir
64) case ve decode ferqi nedir
65) implicit ve explicit nedir
66) hard ve soft parse nedir

create table kapitalbankemail(email varchar2(50));

insert into kapitalbankemail values('[email protected]');


insert into kapitalbankemail values('[email protected]');
insert into kapitalbankemail values('[email protected]');
insert into kapitalbankemail values('[email protected]');
insert into kapitalbankemail values('[email protected]');
insert into kapitalbankemail values('[email protected]');
insert into kapitalbankemail values('[email protected]');
select * from kapitalbankemail;

select substr(email,instr(email,'@',1)+1) as email ,count(*)


as counts from kapitalbankemail group by
substr(email,instr(email,'@',1)+1) ;

create table d_salary_info(emp_id number,emp_name varchar2(20),salary


number, manager_id number);

1 ABDUL 10000 4
2 MOHIT 15000 5
3 VIKAS 10000 4
4 ROHIT 5000 2
5 MUDIT 12000 6
6 AGAM 12000 2
7 SANJAY 9000 2
8 ASHISH 5000 2

select * from d_salary_info w, d_salary_info m


where w.manager_id = m.emp_id and w.salary> m.salary;

select w.emp_id,w.emp_name,m.emp_name,w.salary,m.salary
from d_salary_info w, d_salary_info m
where w.manager_id = m.emp_id and w.salary> m.salary;
--3?
3 VIKAS ROHIT 10000 5000
1 ABDUL ROHIT 10000 5000
2 MOHIT MUDIT 15000 12000

select * from _Football_games;

create table kapitalemployees(emp_id number,name varchar2(50));


create table kapitalsalary(emp_id number,salary number);

select a.*,b.* from kapitalemployees a inner join kapitalsalary b on


a.emp_id = b.emp_id;

100 ALI 100 800


100 ALI 100 500
100 ALI 100 800
100 ALI 100 500
101 BILL 101 1000
101 BILL 101 400
101 BILL 101 1000
101 BILL 101 400
select a.*,b.* from kapitalemployees a left join kapitalsalary b on
a.emp_id = b.emp_id;

100 ALI 100 500


100 ALI 100 500
100 ALI 100 800
100 ALI 100 800
101 BILL 101 400
101 BILL 101 400
101 BILL 101 1000
101 BILL 101 1000
103 SERGI null null
104 RAHO null null
104 RAHO null null
102 JON null null
105 SHOW null null
select a.*,b.* from kapitalemployees a right join kapitalsalary b on
a.emp_id = b.emp_id;

100 ALI 100 800


100 ALI 100 500
100 ALI 100 800
100 ALI 100 500
101 BILL 101 1000
101 BILL 101 400
101 BILL 101 1000
101 BILL 101 400
null null 106 900
null null 107 2000

select a.*,b.* from kapitalemployees a full join kapitalsalary b on


a.emp_id = b.emp_id;

100 ALI 100 800


100 ALI 100 500
100 ALI 100 800
100 ALI 100 500
101 BILL 101 1000
101 BILL 101 400
101 BILL 101 1000
101 BILL 101 400
102 JON null null
103 SERGI null null
104 RAHO null null
104 RAHO null null
105 SHOW null null
null null 106 900
null null 107 2000

create table kapitaldepartments(id number,dep_name varchar2(100));


create table employees_info(id number,dep_id number); drop table
employees;
insert into kapitaldepartments values (103,'POS');
insert into employees_info values (10,100);
insert into employees_info values (20,100);
insert into employees_info values (30,101);
insert into employees_info values (40,102);
insert into employees_info values (50,null);

SELECT E.ID,E.DEP_ID,D.DEP_NAME FROM employees_info


E LEFT JOIN KAPITALDEPARTMENTS D on d.id=e.dep_id where d.id>100;

30 101 FINANCE
40 102 RISK

SELECT E.ID,E.DEP_ID,D.DEP_NAME FROM employees_info E


LEFT JOIN KAPITALDEPARTMENTS D on d.id=e.dep_id and d.id>100;

30 101 FINANCE
40 102 RISK
50 null null
20 100 null
10 100 null;

--AYNUR
-1
SELECT SUBSTR (EMAIL, INSTR( EMAIL,'@', 1)) AS MAILS,
COUNT (SUBSTR (EMAIL, INSTR( EMAIL,'@', 1))) COUNTS
FROM D_EMAIL_INFO
GROUP BY SUBSTR (EMAIL, INSTR( EMAIL,'@', 1)) ;

--2

SELECT e.emp_id, e.emp_name,m.emp_id , m.emp_name ,


e.salary as em_salary, m.salary as manager_salary
FROM SALARY_INFO E join SALARY_INFO M
on e.emp_id=m.manager_id
AND e.salary>m.salary;

--3
select team_name, MATCHES_PLAYED,NO_OF_WINS,
CASE WHEN NO_OF_WINS>1 THEN '0'
WHEN NO_OF_WINS=1 THEN '1'
ELSE '2'
END AS NO_OFF_LOSSES
from
(
SELECT distinct TEAM_1 AS TEAM_NAME, COUNT (TEAM_1) OVER (PARTITION BY
TEAM_1 ) AS MATCHES_PLAYED,
winner, count (winner) over (partition by winner ) as win,
CASE TEAM_1
WHEN 'SL' THEN 0
WHEN 'FRANCE' THEN 2
WHEN 'SA' THEN 0
WHEN 'ENG' THEN 1
WHEN 'AUS' THEN 1
WHEN 'NZ' THEN 1
END AS NO_OF_WINS
from
(
SELECT TEAM_1, WINNER
FROM FOOTBALL_GAMES
UNION ALL
SELECT TEAM_2, null
FROM FOOTBALL_GAMES )
order by winner fetch first 6 rows only)
;
---4
SELECT E.*, S.*
FROM EMPLOYEES E INNER JOIN SALARY S
ON E.EMP_ID=S.EMP_ID;

SELECT E.*, S.*


FROM EMPLOYEES E LEFT JOIN SALARY S
ON E.EMP_ID=S.EMP_ID;

SELECT E.*, S.*


FROM EMPLOYEES E RIGHT JOIN SALARY S
ON E.EMP_ID=S.EMP_ID;

SELECT E.*, S.*


FROM EMPLOYEES E FULL JOIN SALARY S
ON E.EMP_ID=S.EMP_ID;

--5

SELECT E.ID, E.DEP_ID, D.DEP_NAME


FROM EMPLOYEES2 E LEFT JOIN DEPARTAMENTS D
ON D.ID=E.DEP_ID
WHERE D.ID>100;

SELECT E.ID, E.DEP_ID, D.DEP_NAME


FROM EMPLOYEES2 E LEFT JOIN DEPARTAMENTS D
ON D.ID=E.DEP_ID
AND D.ID>100;

---6???

SELECT T.ID,T.TYPE, T.AMOUNT, C.NAME, SUM(T.AMOUNT) AS TOTAL


FROM TRANSACTION3 T JOIN CURRENCY C
ON T.CURRENCY=C.CUR_ID
GROUP BY T.ID,T.TYPE, T.AMOUNT, C.NAME;

--7
SELECT * FROM(
SELECT BANK_DATE, CURRENCY, RATE,
LEAD(RATE,1, NULL) OVER (PARTITION BY CURRENCY ORDER BY BANK_DATE ASC) AS
RATE_AFTER
FROM currency_rate)
ORDER BY BANK_DATE;

--8
SELECT DISTINCT ACCOUNT, LAST_VALUE(BALANCE) OVER (PARTITION BY ACCOUNT )
AS BALANS
FROM ACCOUNT_BALANCE
WHERE BANK_DATE < '25-MAY-2022'
ORDER BY ACCOUNT;

--10
SELECT IDD
,RANK() OVER (ORDER BY IDD ASC) AS "RANK"
,DENSE_RANK() OVER (ORDER BY IDD ASC) AS "DENSE_RANK"
,ROW_NUMBER () OVER (ORDER BY IDD ASC) AS "ROW_NUMBER"
,ROWNUM AS "ROWNUM"
FROM T
ORDER BY IDD;

create table test_1 (


id number
);

insert into test_1 values(1);


insert into test_1 values(2);
insert into test_1 values(3);
insert into test_1 values(5);
insert into test_1 values(7);
insert into test_1 values(8);
insert into test_1 values(9);
insert into test_1 values(15);
insert into test_1 values(17);
insert into test_1 values(19);
insert into test_1 values(20);
insert into test_1 values(21);
insert into test_1 values(22);

select*from test_1;

select id,rownum from test_1;

select id,row_number()over(order by id) from test_1;

select id,id-row_number()over(order by id) as qrup from test_1 ;

select min(id) from test_1;


select max(id) from test_1;

select a.*,
min(id)=max(id)
from test_1 a
group by id
order by id;

--son hali

with cte as(


select id,
id-row_number()over(order by id) as qrup
from test_1)
select
case
when min(id)=max(id) then to_char(min(id))
else to_char(min(id)) || '-' || to_char(max(id))
end result
from cte
group by qrup
order by qrup;

--8

create table account_balance(


bank_date date,
account number,
balance number
);

insert into account_balance values ('15-apr-2022',101,500);


insert into account_balance values ('18-apr-2022',101,1000);
insert into account_balance values ('19-apr-2022',102,800);
insert into account_balance values ('01-may-2022',102,700);
insert into account_balance values ('15-may-2022',103,650);
insert into account_balance values ('25-may-2022',103,900);

select*from account_balance;

--son hali

select account,
balance
from(
select account,
balance,
row_number() over(partition by account order by bank_date desc) as qrup
from account_balance
)
where qrup=1;

--Cavid
. SELECT
SUBSTR(email, INSTR(email, '@') + 1) AS emails,
COUNT(*) AS counts
FROM D_EMAIL_INFO
WHERE email LIKE '%gmail.com' OR email LIKE '%kapitalbank.az'
GROUP BY SUBSTR(email, INSTR(email, '@') + 1) order by counts;

2. Select w.emp_id,w.emp_name,m.emp_name as manager_name, w.salary


as em_salary,m.salary as manager_salary from D_salary_info w,
D_salary_info m
where w.manager_id=m.emp_id
and w.salary>m.salary order by w.emp_id;

4.select a.*,b.emp_id from employees a join salary b


on a.emp_id=b.emp_id;--inner

select a.*,b.salary from employees a right join salary b


on a.emp_id=b.emp_id;--right

select a.*,b.salary from employees a left join salary b


on a.emp_id=b.emp_id;--left

select a.*,b.emp_id from employees a full outer join salary b


on a.emp_id = b.emp_id order by a.emp_id;

5. a- 30 101 FINANCE
40 102 RISK,
b- 10 100 null
20 100 null
30 101 FINANCE
40 102 RISK
50 null null

6.WITH NumberGroups AS (
SELECT ID,ID - ROW_NUMBER() OVER (ORDER BY ID) AS GroupID
FROM Test_1),
GroupedNumbers AS (
SELECT MIN(ID) AS StartID, MAX(ID) AS EndID,COUNT(*) AS GroupSize
FROM NumberGroups
GROUP BY
GroupID)
SELECT CASE WHEN GroupSize = 1 THEN CAST(StartID AS VARCHAR(10))
ELSE CAST(StartID AS VARCHAR(10)) || '-' || CAST(EndID AS VARCHAR(10))
END AS NumberRange
FROM GroupedNumbers
ORDER BY StartID;

7.SELECT BANK_DATE,CURRENCY,RATE,
LEAD(RATE) OVER (PARTITION BY CURRENCY ORDER BY BANK_DATE) AS RATE_AFTER
FROM D_CURRENCY_RATE
ORDER BY BANK_DATE;

8.SELECT ab1.account,ab1.balance
FROM account_balance ab1
JOIN(SELECT account, MAX(bank_date) AS max_date
FROM account_balance WHERE bank_date <= '2022-05-20'
GROUP BY account) ab2
ON ab1.account = ab2.account AND ab1.bank_date = ab2.max_date; 102 id-li
müştəridə düzgün cavabı ala bilmədim.
9. SELECT a.Id,
SUM(CASE WHEN a.Type = 'C' THEN a.Amount ELSE 0 END) AS Credit,
SUM(CASE WHEN a.Type = 'D' THEN a.Amount ELSE 0 END) AS Debit,
SUM(CASE WHEN b.title = 'AZN' THEN a.Amount ELSE 0 END) AS AZN,
SUM(CASE WHEN b.title = 'USD' THEN a.Amount ELSE 0 END) AS USD,
SUM(CASE WHEN b.title = 'EUR' THEN a.Amount ELSE 0 END) AS EUR,
SUM(a.Amount) AS Total
FROM Transactions a
JOIN currency_task b ON a.currency = b.cur_id
GROUP BY a.id;

10.
İDD RANK DENSE_RANK ROW_NUMBER ROWNUM
1 1 1 1 1
2 2 2 2 2
2 2 2 3 3
3 4 3 4 4
4 5 4 5 5
5 6 5 6 6
6 7 6 7 7
6 7 6 8 8
7 9 7 9 9
8 10 8 10 10

-- task 3

create table d_football_games(


team_1 varchar2(10),
team_2 varchar2(10),
winner varchar2(10));
insert into d_football_games values('france','sl','france');
insert into d_football_games values('sl','aus','aus');
insert into d_football_games values('sa','eng','eng');
insert into d_football_games values('eng','nz','nz');
insert into d_football_games values('aus','france','france');
select*from d_football_games;

with team as
(select team_1 as team_name ,winner from d_football_games
union all
select team_2 as team_name ,winner from d_football_games )

select team_name , count(team_name) as matches_played,


sum( case when team_name = winner then 1 else 0 end)
as no_of_wins,sum(case when team_name <> winner then 1 else 0 end) from
team group by team_name;

Kapital
--1
select * from email_addresses;
select count(*),substr(email,instr(email,'@')) from email_addresses
group by substr(email,instr(email,'@'));

--2
select a.emp_id,a.emp_name,b.manager_name,a.salary,b.salary
from d_salary_info a join manager_info b on
a.manager_id=b.manager_id
where a.salary>b.salary;

--3
create table results_k as
select team_name ,count(*)as oyun_sayi,
sum(case when winner=team_name then 1 else 0 end)
as win_no ,
count(*)-sum(case when winner=team_name then 1 else 0 end)
as lost_no
from (
select team_1 as team_name, winner from football_games
UNION ALL
select team_2 as team_name, winner from football_games) teams
group by team_name ;

--4

--inner
100 Ali 100 800
100 Ali 100 500
100 Ali 100 800
100 Ali 100 500
101 Bill 101 1000
101 Bill 101 400
101 Bill 101 1000
101 Bill 101 400

--left
100 Ali 100 500
100 Ali 100 500
100 Ali 100 800
100 Ali 100 800
101 Bill 101 400
101 Bill 101 400
101 Bill 101 1000
101 Bill 101 1000
103 Sergi
104 Raho
104 Raho
102 Jon
105 Show

--full join
100 Ali 100 800
100 Ali 100 500
100 Ali 100 800
100 Ali 100 500
101 Bill 101 1000
101 Bill 101 400
101 Bill 101 1000
101 Bill 101 400
102 Jon
103 Sergi
104 Raho
104 Raho
105 Show
106 900
107 2000

--5
a)
30 101 FINANCE
40 102 RISK

b)
30 101 FINANCE
40 102 RISK
50
20 100
10 100

--6
select case
when start_id = end_id then to_char(start_id)
else to_char(start_id) || '-' || to_char(end_id) end as results
from (
select MIN(id) as start_id, MAX(id) as end_id
from (
select id, row_number() over (order by id) - id as Sh
from test1 )
group by Sh)
order by start_id;

--7
select a.*, lead(a.rate,1) over (order by bank_date ) as after_rate
from k_currency_rate a ;

--8
select account,balance,bank_date
FROM(
select balance,bank_date ,account,
row_number() over (partition by account order by bank_date desc) as rwn
from k_ACCOUNT_BALANCE
where bank_date<=('20-MAY-2022')
) WHERE rwn=1;

--9
--??? pivot ayri ayri isleyir amma 2 si biryerde olanda (amount ) invalid
yazilir alias verib yazsam da eyni --???

SELECT * from(
select id,amount,currency ,type from kap_transactions )
pivot (
sum(amount)as valyuta for currency in (1 as AZN,2 as USD,3 as EUR ))
pivot (
sum(amount) as tipi for type in ('C' as credit,'D'as debit));

--10
--RANK (1,2,2,4,5,6,7,7,9,10)
--DENSE_RANK(1,2,2,3,4,5,6,6,7,8)
--ROW_RUMBER ,ROWNUM(1,2,3,4,5,6,7,8,9,10)
Dear Candidate,

Thanks for applying to job of "Data Reporter" of CVM team in


Yelo Bank. We welcome you at the SQL & BI (Visualization)
knowledge assessment test. What you need to do is simple if
you are truly at the level of skills mentioned in your resume.
Assessment will have two parts.

Part 1: SQL assessment


At the I Part we will test your SQL skills First 1-4 questions
will let us know how you interpret SQL queries. Pls. carefully
review the selects and explain us how we can use these selects,
what info we will extract from DWH using these queries.
Second 5-11 questions require to exclude correct selest to get
exact info asked in the task. Pls. be carefull while generating
select as we will insert it to the program & you will loose the
point if code will fail to extract data. Your answers should be
placed on related spaces at the below described table.

Part 2: BI Reporting and Visualisation


At the II part we will test your BI Reporting and Visualisation
skills. What is reuiqred from you is to prepare the general
analytical & statistical report for "Credit Card" Product Owner
which will help him to understand its product and to define
further action plans. Pls. note that your report should give all
necessary insights to product owner. Which important insights
you will show and how you visualize it we leave to your
experience. Prepare your report in any of below mentioned
reporting tools (Power BI, Tableau or Metabase) and send the
link, file or ppt with attached report to us for further
evaluation.

Note: All required infor & data is included into the excel file
in seperate sheets. (Product & Transaction). The connection
(primary key) of each table are described in Schema sheet. Pls.
note that no any external source integration is needed or
required in this assessment.

Good Luck!

LEV
Explanation SQL Script
EL
1 Skript, product SELECT CUSTOMER_CODE, easy
cədvəlindən
müştəri kodu və
hesab açılması
ACCOUNT_OPENED_DATE,
tarixi sütunlarını
AVG(CREDIT_BALANCE)
seçir, daha sonra
OVER(PARTITION BY CUSTOMER_CODE
hər müştəri üçün
ORDER BY ACCOUNT_OPENED_DATE)
hesab açılması
AS AVERAGE_CREDIT_BALANCE
tarixinə görə
FROM PRODUCT;
ortalama kredit
balansını
hesablayıb gətirir.
Skript müştəri
kodlarını
qruplaşdıraraq
müştəri kodunu,
hər müştəri SELECT B.CUSTOMER_CODE,
koduna uyğun SUM(B.TRANSACTION_AMOUNT) AS
tranzaksiya TOTAL_TRANSACTION_AMOUNT,
məbləğini və SUM(B.TAKSIT_COMISSION) AS
mid(4/
2 taksit TOTAL_TAX_COMMISSION
10)
komissiyasının FROM TRANSACTION B
cəmini çıxarır. GROUP BY B.CUSTOMER_CODE
Sıralama azdan ORDER BY TOTAL_TAX_COMMISSION
çoxa sıralanmış DESC;
taksit
komissiyasının
cəmi sütununa
əsasən edilir.
Bu skriptdə
əvvəlcə A və B
cədvəlləri
birləşdirilir. A
WITH ExceedingCardLimit AS
cədvəli özündə
(SELECT A.CUSTOMER_CODE,
müştəri kodu, B
B.OPEN_DATE,
cədvəli hər
B.CARD_LIMIT,
müştərinin hesab
SUM(B.TRANSACTION_AMOUNT)
açdığı tarixi, kart
OVER(PARTITION BY
limitini saxlayır.
A.CUSTOMER_CODE ORDER BY
Sorğuda əvvəlcə
B.OPEN_DATE) AS
hesab açılması
CUMULATIVE_AMOUNT
tarixinə əsasən hər mid(6/
3 FROM A
müştərinin 10)
JOIN B
tranzaksiyalarının
ON A.CUSTOMER_CODE =
cəmi(CUMULATİ
B.CUSTOMER_CODE)
VE SUM)
SELECT CUSTOMER_CODE, COUNT(*) AS
hesablanır və CTE
EXCEED_COUNT
də saxlanır.
FROM ExceedingCardLimit
Növbəti selectdə
WHERE CUMULATIVE_AMOUNT >
müştəri kodları
CARD_LIMIT
qruplaşdırılır və
GROUP BY CUSTOMER_CODE;
hər müştərinin
kart limitini aşdığı
əməliyyat sayı
hesablanır.
4 1-ci addımda hər WITH MaxCashOutCommissions AS mid(6/
tranzaksiya tipinə (SELECT B.TRANSACTION_TYPE, 10)
uyğun ən yüksək MAX(B.CASH_OUT_COMISSION) AS
nağdlaşdırma MAX_CASH_OUT_COMMISSION
komissiyası
FROM TRANSACTION B
tapılır. Daha sonra
GROUP BY B.TRANSACTION_TYPE)
Transaction table-ı
SELECT B.CUSTOMER_CODE,
ilə Temporary
B.TRANSACTION_TYPE,
MaxCashoutComi
B.CASH_OUT_COMISSION
ssion table-ı join
FROM TRANSACTION B
edilir. Və ən
INNER JOIN MaxCashOutCommissions
yüksək
ON B.TRANSACTION_TYPE =
nağdlaşdırma
MaxCashOutCommissions.TRANSACTION_T
komissiyası olan
YPE
müştərilərin
AND B.CASH_OUT_COMISSION =
kodu,tranzaksiyanı
MaxCashOutCommissions.MAX_CASH_OUT
n tipi və məbləğ
_COMMISSION;
göstərilir.
Hər bir filial
üzrə aylıq
5
satış easy
məbləğini əks
select branch_name,sum(abs(credit_usage))
etdirən sorğu from product
yazın. group by branch_name;
select EXTRACT(MONTH FROM
Aylar üzrə TO_DATE(operation_date, 'DD Month, YYYY,
HH24:MI')) AS
cash və non- MONTH,sum(transaction_amount) from
6
cash əməliyyat transaction
easy
məbləğini əks where transaction_type_
in('CASH','NONCASH') group by
etdirən sorğu EXTRACT(MONTH FROM
yazın. TO_DATE(operation_date, 'DD Month, YYYY,
HH24:MI'));
Hesabını
bağlamış
müştərilərin
tranzaksiya
7 sayı və select easy
məbləğini t.customer_code,count(t.operation_date),sum(t.t
göstərən ransaction_amount) from transaction t inner join
product p t.customer_code = p.customer_code
cədvəl where p.account_closed_date is not null group
hazırlayın. by t.customer_code;
8 Müştərinin SELECT mid(8/
t.customer_code,p.account_opened_date, 10)
hesab acıldığı FIRST_VALUE (TO_DATE(operation_date,
tarixdən neçə 'DD Month, YYYY, HH24:MI')) OVER
gün sonra (PARTITION BY t.customer_code ORDER BY
sonra ilk t.operation_date ASC) AS
first_transaction_date,
əməliyyat FIRST_VALUE (TO_DATE(operation_date,
edir? Müştəri 'DD Month, YYYY, HH24:MI')) OVER
kodu, hesabın (PARTITION BY t.customer_code ORDER BY
açıldığı t.operation_date ASC) -
TO_DATE(p.account_opened_date, 'DD Month,
tarix,ilk YYYY, HH24:MI') AS date_difference
əməliyyat FROM transact t
tarixi,günlərin
sayı əks
INNER JOIN
olunan cədvəl product p ON t.customer_code =
tərtib edin. p.customer_code;
Kredit kartı
olub lakin
istifadə
mid(6/
9 etməyən 10)
müştərilərin select customer_code from product where
siyahısını credit_usage = 0 and product_name='Credit
tərtib edin. Card';
select * from(
SELECT
Son 6 ayda customer_code,operation_date,transaction_amo
artan unt-lag(transaction_amount,1,0) over(partition
tranzaksiya by customer_code order by operation_date) as
1 max_transaction
0 məbləği olan FROM transact
hard
müştərilərin WHERE TO_DATE(operation_date, 'DD
siyahısını Month, YYYY, HH24:MI') >=
tərtib edin. add_months(sysdate,-6)
order by operation_date)
where max_transaction > 0;
Hər ayın ilk
günü( məs:01-
sep-2023)
üçün bir
1
1 əvvəlki ayın select operation_date, sum(cash_out_comission) Hard
cash_out_com over(order by operation_date) from transact
mision where extract(month from
to_date(operation_date, 'DD Month, YYYY,
məbləğini HH24:MI'))= extract(month from
hesablayın. trunc(sysdate,'mm')) - 1;

20) implicit-unique,primary key


explicit-create index;

select * from user_indexes;


select * from user_ind_columns;

select * from dic_loan where contract_id='LD19030884002';

select * from dic_loan where rowid= 'AAASQZAAEAAAAIbAAF';


create index contract_id_idx on dic_loan(contract_id);
<>,!=,^=,not in, like %evvele index islemir

drop index adi online;


1000-400=600;

--plsql nds abb azercell unibank


--create index; select ; drop index; update;

create index contract_id_idx2 on dic_loan(contract_id,value_date);


--btree,bitmap,function based

create bitmap index contract_id_idx3 on dic_loan(gender);

select * from dic_loan;

--function
create index customername_idx on loan_contract(upper(customer_name));
select /*customername_idx */ * from loan_contract where customer_name
like 'B%';
select /* paralel */ * from a;
select * from loan_contract where upper(customer_name) like 'A%';

--customername,gender,bday;
--classmarker.com

--explain plan

explain plan for


select * from dic_loan where currency_id=944;

select * from table (dbms_xplan.display);

--hint data admin

--kapital task:

create table duubtable (id number,name varchar2(20));


insert into duubtable values (2,'b');
select distinct id,name from duubtable;
select unique id,name from duubtable;
--1
select id,name from duubtable group by id,name;
--2
select id,name from duubtable
union
select id,name from duubtable;
--3
select id,name from duubtable
union
select null,null from dual where 1=2;
--4
select id,name from duubtable
minus
select null,null from dual where 1=2;

--5
select max(rowid),id,name from duubtable group by id,name;
--6
select min(rowid),id,name from duubtable group by id,name;
--7
select * from
(select id,name,row_number() over (partition by id,name order by id,name)
as myrownum
from duubtable) where myrownum=1;

--8
select * from
(select id,name,dense_rank() over (partition by id,name order by id,name)
as myrownum
from duubtable) where myrownum=1;
--9
select * from duubtable a where 1=(select count(1)
from duubtable b
where a.id=b.id and a.name=b.name and a.rowid>b.rowid);

--ctas;create table as select

create table copy_dic as select * from dic_loan;


create table copy_dic2 as select * from dic_loan where 1=2;

21) --oop,power,dax
--surragate key 12c, virtual column;
--generated always as identity
--generated by default as identity

create table testw(


id number generated by default as identity,
name varchar2(20),
primary key (name)
);
insert into testw values (5,'a') ; id=5;

create table testw(


id number generated by always as identity,
name varchar2(20)
);
insert into testw values (5,'a') ; id=1;

--trigger-sequence 103

--347-3.47 4
--3m-2=1 3.202.20=1 3.80-2.20=1.60 4-2.50.1.50 virtual column

create table market (


tran_id number,
product_name varchar2(20),
capacity number,
buy_price number,
sold_price number,
profit as (buy_price-sold_price)
);
insert into market(tran_id,product_name,capacity,buy_price,sold_price)
values (1,'snikers',5,1.70,2.30);
insert into market(tran_id,product_name,capacity,buy_price,sold_price)
values (2,'mars',10,1.30,2.40);
insert into market(tran_id,product_name,capacity,buy_price,sold_price)
values (3,'bounty',15,1.20,2.70);

select * from market;


update market set buy_price=1.34 where tran_id=1;

alter table market add cap_desc as (


case when capacity=5 then 'small'
when capacity=10 then 'medium'
when capacity=15 then 'large' end);

--ERD
22) drop table wwa_invoices;

create table wwa_invoices (


inv_id number(7),
cust_po nvarchar2(20),
inv_date date,
notes nvarchar2(200)
);

insert into wwa_invoices values(10,'wwa-200','17-dec-2019',null);


insert into wwa_invoices values(20,'wwa-001','23-dec-2019',null);

drop table ontario_orders;


create table ontario_orders (
order_num number(11),
po_num nvarchar2(200),
sales_rep nvarchar2(20)
);

insert into ontario_orders values (882,'wwa-001','Ruslan');


insert into ontario_orders values (883,'wwa-017','Yusif');
insert into ontario_orders values (884,'nbc-201','Nabat');

select * from wwa_invoices;


select * from ontario_orders;

select * from dic_loan; --merge dml

merge into table a --yalniz 1 eded olmalidir


using subquery|view|table --required
on condition --required and or
when matched then
update; delete; insert;
when not matched then
insert;
--where de merge olunan table-a muraciet olmaz.

merge into wwa_invoices wwa


using ontario_orders ont
on (wwa.cust_po=ont.po_num)
when matched then
update set wwa.notes=ont.sales_rep
when not matched then
insert (wwa.inv_id,wwa.cust_po,wwa.inv_date,wwa.notes)
values (5,ont.po_num,sysdate,ont.sales_rep);
--where ont.po_num not like '%nbc%';
/*
insert into
values()
values()
*/

insert all
into table1 values()
into table1 values()
into table1 values()
subquery;

insert all
into table1
into table1
into table1
into table1
subquery;

create table multiins2 as select * from dic_loan where 1=2;

select * from multiins1;

insert all
into multiins1 values (mydate,customer_id)
into multiins2 values (mydate,customer_id)
into multiins3 values (mydate,customer_id)
select to_char(value_date) as mydate,customer_id from dic_loan;

truncate table multiins3;

insert first |all


when expr then
into table1
into table1
when expr then
into table1
else
into table1
subquery;

select * from dic_loan;

--default all-dur
insert first
when orig_term=12 then
into multiins1
into multiins3
when orig_term between 12.01 and 60 then
into multiins2
select * from dic_loan; --standalone olmalidir

select * from multiins2;


truncate table multiins3;
nth yalniz 1 qiymet,dense_rank;

select * from employees where salary =(


select max(salary) from employees where salary
not in (select max(salary) from employees));

23) SELECT '+994'||SUBSTR(REGEXP_REPLACE('VU055-980-60-32hel','[^0-9]'),-


9) FROM DUAL;
--regexplike,regexpinstr,regexpsubstr,regexpreplace,regexpcount
select * from employee where regexp_like(name_employee,'Res(a|u)d');
select * from employee where regexp_like(name_employee,'^R(*)');
select * from employee where regexp_like(name_employee,'(*)d$');
select * from employee where regexp_like(name_employee,'^R|^A(*)');
select * from employee where name_employee like 'A%' or name_employee
like 'R%';
insert into employee values (24,'Tlamila',5000,32);

select name_employee,regexp_instr(name_employee,'^R|^A(*)' ) from


employee;
select * from employee where regexp_like(name_employee,'l{2}');
select*from employee where name_employee like '%ll%';
select * from employee where regexp_like(name_employee,'[a-d]');
select * from employee where regexp_like(name_employee,'[gfry]');

SELECT '+994'||SUBSTR(REGEXP_REPLACE('55=980-60-32','[^0-9]'),-9) FROM


DUAL;

select regexp_substr('Vusale Babayeva Cahid qizi','[[:alpha:]]+',1,level)


from dual
connect by level<=4;

select regexp_substr('Vusale Babayeva Cahid qizi','[[:alpha:]]+',1,level)


from dual
connect by level<=regexp_count('Vusale Babayeva Cahid qizi',' ');

select regexp_count('Vusale Babayeva Cahid qizi','i') from dual;

select regexp_instr();

--grouping_sets
select regexp_replace('Vusale Babayeva Cahid qizi','^(\S*)','oracle') from
dual;

select regexp_replace('Vusale 5 Babayeva 3 Cahid 3 qizi 5','\d','#') from


dual;

id=5 id=rowid;

x table
id gfyt634tr88 rowid

24) aktivler=ohdelik+kapital+gelir-xerc;-1000-1000-1000-1000-1000
pul,masinin,telefon,komputer,torpaq,obyekt,ev
aktivler=passivler=ohdelik+kapital+gelir-xerc;
--ev 100.000
aktivler=ohdelik+kapital+gelir-xerc;+10.000
5000-komputer,5,4000,3000
5000-temir eliyirsen,konkret xercdir.

hint=explain to plan

select to_char;

instead if trigger yalniz view-ya tetbiq olunur.;


mode-avg;
median<<<<<< avg

1,2,3,3,3,3,4,4,700,890,4567,7890,9400 ex=2000 median 4; mode=3;

--1000 400-500 mode<avg


--albali albali2
--ctrl+E;

explain plan for


select * from dic_loan;

select * from table(dbms_xplan.display);

--dax
nth_value
select distinct nth_value(amount_azn,2) over (partition by filial_code
order by amount_azn desc
range between unbounded preceding and unbounded following
) as a2ci_yer from tableadi;

window function;

regexp_like,regexp_instr,regexp_substr,regexp_count,regexp_replace;

--+994 55 980 60 32

select regexp_substr('this is interview lesson','[[:alpha:]]+',1,3) as


the_3th_word
from dual;

select regexp_substr('this is interview lesson abc','[[:alpha:]]


+',1,level) as words
from dual connect by level<=regexp_count('this is interview lesson abc','
')+1;

SELECT * FROM
(select a.*,dense_rank() over (partition by filial_code order by
amount_azn DESC) as mydense
from loan_contract a) WHERE mydense<=3;

--extract (month from act_date)


select max(cum_sum),month from
(select act_date,amount_azn,cum_sum,
case when act_date between '01-may-2019' and '31-may-2019' then 'may'
when act_date between '01-jun-2019' and '30-jun-2019' then 'jun'
end as month from
(select a.*,sum(amount_azn) over(order by act_date) as cum_sum from
loan_contract a )) group by month;

--1221 ana

declare
n number;
m number;
temp number:=0;
rem number;
begin
n:=1221;
m:=n;
while n>0
loop
rem:=mod(n,10);
temp:=(temp*10)+rem;
n:=trunc(n/10);
end loop;
if
m=temp
then
dbms_output.put_line('yes it is polindrom');
else
dbms_output.put_line('no, it is not polindrom');
end if;
end ;
/

select reverse('anar') from dual;

declare
i_var varchar2(40):='ana';
v_print varchar2(40);
begin
select lower(reverse(i_var)) into v_print from dual;
if
lower(i_var)=v_print
then
dbms_output.put_line('yes it is polindrom');
else
dbms_output.put_line('no, it is not polindrom');
end if;
end;
/

set serveroutput on;

--partition table unbank cdo

create table documents (


id number,
branch number,
operation varchar2(20),
act_date date
)
partition by range(act_date)
interval (numtoyminterval(1,'month'))
(partition p1 values less than (to_date('06-feb-2006','dd-mon-yyyy')))
;

alter table documents modify


partition by range(act_date)
interval (numtoyminterval(1,'month'))
(partition p1 values less than (to_date('06-feb-2006','dd-mon-yyyy')))
online;
update feb-p mar-p ;

alter table documents enable row movement;

--online

create index x1 on tableadi (coladi) local;


set serveroutput on;

12c+;
select * from v$version;
--SYS_P22
select * from documents where act_date between '01-apr-2007'
and '30-apr-2007';

select * from documents partition(SYS_P22);

select * from documents partition for (to_date('08-apr-2007','dd-mon-


yyyy'));

90+ gl_entries 5milyard+leo 1dq.23saniye;

3) Which statement is true regarding external tables? B


A. The CREATE TABLE AS SELECT statement can be used to upload data into a
normal table in the database from an external table.
B. The data and metadata for an external table are stored outside the
database.
C. The default REJECT LIMIT for external tables is UNLIMITED.
D. ORACLE_LOADER and ORACLE_DATAPUMP have exactly the same functionality
when used with an external table

cust_id in (select cust_id from tran where type='out')

25) /*declare
begin
exception
end;
/

create or replace procedure as


begin
exception
end;
/

--dml tcl
--nds ddl

--f=2x+5
--x=1,2,3
*/
declare
v_test varchar2(10);
v_test2 varchar(10);
begin
v_test:='Hello';
v_test2:='World';
dbms_output.put_line(v_test||' '||v_test2);
end;
/
declare
v_test varchar2(20):='Hello world!';
begin
dbms_output.put_line(v_test);
end;
/
set SERVEROUTPUT on;

--const-variable;

declare
v_test varchar2(20):='Hello world!';
begin
v_test:='Databyte';
dbms_output.put_line(v_test);
end;
/

declare
g constant number:=10;
begin
dbms_output.put_line(g);
end;
/

declare
g constant number;
begin
g:=10;
dbms_output.put_line(g);
end;
/

--select * from employee where id_employee=1;


declare
V_name varchar2(30);
v_salary number;
begin
select name_employee,salary into V_name,v_salary from employee where
id_employee=1;
dbms_output.put_line(V_name||' '||v_salary);
end;
/
--error loop
declare
V_name varchar2(30);
v_salary number;
begin
select name_employee,salary into V_name from employee where id_employee=1;
dbms_output.put_line(V_name||' '||v_salary);
end;
/

declare
V_name employee.name_employee%type;
v_salary employee.salary%type;
begin
select name_employee,salary into V_name ,v_salary from employee where
id_employee=1;
dbms_output.put_line(V_name||' '||v_salary);
end;
/

--subtype kapital;
--simple,with range ,with constarint;

declare
subtype ad_soyad is varchar2(50) not null;
x ad_soyad:='a';
y ad_soyad:='b';
z ad_soyad:='c';
begin
dbms_output.put_line(x||y||z);
end;
/

declare
subtype bi is binary_integer range 1..10;
a bi;
b bi;
begin
a:=15;
b:=8;
dbms_output.put_line(a||' '||b);
end;
/

26) --if
/*
if condition then
nebas versin statement;
end if;
*/

declare
v_num number:=9;
v_name varchar2(30):='plsql';
begin
if
v_num<=10 and v_name='plsql' then
dbms_output.put_line('inside if');
end if;
end;
/

declare
v_num number:=23;
v_name varchar2(30):='plsql';
begin
if
v_num<=10 and v_name='plsql' then
dbms_output.put_line('inside if');
else
dbms_output.put_line('outside if');
end if;
end;
/

declare
v_num number:=&enternumber;
begin
if mod(v_num,2)=0 then
dbms_output.put_line(v_num||' is even');
else
dbms_output.put_line(v_num||' is odd');
end if;
end;
/
/*
case when then
when then
when then
when then
*/

declare
v_place varchar2(30):='&place';
begin
if v_place='Baki' then
dbms_output.put_line('Azerbaijan');
elsif v_place='Vasinqton' then
dbms_output.put_line('ABS');
elsif v_place='Vyana' then
dbms_output.put_line('Avstriya');
elsif v_place='Ankara' then
dbms_output.put_line('Turkiye');
else dbms_output.put_line('bilmirem');
end if;
end;
/

declare
tarix date:=to_date('&new_dt','dd-mon-yyyy');
get_day varchar2(20);
begin
get_day:=rtrim(to_char(tarix,'day'));
if get_day in ('saturday','sunday') then
dbms_output.put_line(get_day||' is a weekend');
else
dbms_output.put_line(get_day||' is not a weekend');
end if;
end;
/

declare
get_ctr char(1):='&enter';
begin
if (get_ctr>='A' and get_ctr<='Z') or
(get_ctr>='a' and get_ctr<='z') then
dbms_output.put_line('it is a letter');
elsif get_ctr between '0' and '9' then
dbms_output.put_line('it is a number');
else dbms_output.put_line('i dont know');
end if;
end;
/

--vtb 900 0 1 1 2 3 5 8 13 fibanoci


--5!=1*2*3*4*5=120;
--10
--1100 specialist 1500-1600 3000net pasaya
--800-900 junior 6ay 1600, 2k leading --1000 500 net 1000net

declare
grd char(1):='&newgrd';
begin
case grd
when 'A' then dbms_output.put_line('outstanding');
when 'B' then dbms_output.put_line('excellent');
when 'C' then dbms_output.put_line('very good');
when 'D' then dbms_output.put_line('average');
when 'E' then dbms_output.put_line('poor');
end case;
end;
/

declare
grd number:=&newgrd;
begin
case
when grd between 51 and 60 then dbms_output.put_line('E');
when grd between 61 and 70 then dbms_output.put_line('D');
when grd between 71 and 80 then dbms_output.put_line('C');
when grd between 81 and 90 then dbms_output.put_line('B');
when grd between 90.01 and 100 then dbms_output.put_line('A');
end case;
end;
/

--kvadrat tenliyi hesablayan

ab2+bx+c=0
X1= X2;

27) --star,snowflake,galaxy
--normallasma formalari;1,2,3,boyce cod,
--soft ve hard parse azerturk,vtb -- 2saat 1saat 50 dq

--etl dama book-view,mv,;


--select * from adi_mv;
--or replace
/*
create materialized view adi_mv
build immediate|| deferred --default build immediate
refresh complete||force||fast
on commit||on demand --default on demand
enable||disable --with primary key|| with rowid
as select .....;

drop materialized view adi_mv;

execute dbms_snapshot.refresh('adi','c');
--50 mv
declare
failures number;
begin
dbms_mview.refresh_all_mviews(failures,'c','',true,false,false);
end;
/

--screenshot
select * from emp;
insert into emp values (8,130,1000);
select * from test_mv;

create materialized view test_mv


refresh complete
start with sysdate
next trunc(sysdate)+7
as select * from emp;

execute dbms_snapshot.refresh('test_mv','c');
--sql turning explain plan 2000 400 reduce cost
--job
create materialized view log on currency_id;
create materialized view log on loan_contract;
create materialized view log on branch;

*/

set SERVEROUTPUT on; --print

You might also like