Taski
Taski
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;
----
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;
(start-min)/maxvalue<=cache;
ceil((maxvalue-minvalue)/abs(increment) <=
4) not null
check
unique
primary key=not null+unique
foreign key;
default 0; --constraint deyil
--inline outline
--null,1,2,3,null-error null,null,
--20:50
unique,primary key-index;
--deleted---0-1 1
--number(5,-2) 05 00 09 10
create procedure
insert a
select ....b;
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;
--plsql 3k;
--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 greatest(gecikme_esasborc,gecikme_cerime_borcu,gecikme_faizborcu)
from dual;
select upper(customer_name),lower(customer_name),initcap(customer_name)
from loan_contract;
--number
select mod(11,4) from dual;
select remainder(11,4) from dual; --8 12
--date
--level
select rownum from dual connect by rownum <=10;
/*
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,
*/
select upper(customer_name),lower(customer_name),initcap(customer_name)
from loan_contract;
--instr substr
--number
select mod(11,4) from dual;
select remainder(11,4) from dual; --8 12
--date
--level
select rownum from dual connect by rownum <=10;
*/
select greatest(gecikme_esasborc,gecikme_cerime_borcu,gecikme_faizborcu)
from dual;
--instr substr
--number
select mod(11,4) from dual;
select remainder(11,4) from dual; --8 12
--date
--level
select rownum from dual connect by rownum <=10;
/*
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,
*/
--regexp_substr
--ay sonlari
SELECT LAST_DAY(TO_DATE('23-' || LEVEL || '-2024', 'DD-MM-YYYY'))
FROM dual
CONNECT BY LEVEL <= 12;
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;
400,400,300,300,300,300,200,100
select * from loan_contract limit 10;
--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;
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;
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
(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 ;
--lag,lead,
--group by
select distinct currency_id, listagg(contract_id,'/') within group
(order by amount_azn desc) over (partition by currency_id )
from loan_contract ;
--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 % _ _;
can be created:
table,view,sequence,procedure,function,package,mv,synonym;
x.azad
a.azad
b.azad
--table,public synonym
privaTE ;
conversion,case,decode,null funksiyalar-azerturk,vtb--4cugun
kind of joins:
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;
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
avg(nvl(null,0)) 300/4=75;
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;
--conversion
--implicit explicit
--to_date,to_number,to_char
select '5' from dual;
--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
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;
--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;
--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 customer_id,value_date,currency_id,
(select name from currency b where a.currency_id=b.id)
from dic_loan a;
--inner join-exists
--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();
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;
--invisible column
purge user_recyclebin;
--force
/*
1 1
2 2
3 3
6 4
7
10
*/
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 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
30 101 FINANCE
40 102 RISK
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
--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;
--5
---6???
--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;
select*from test_1;
select a.*,
min(id)=max(id)
from test_1 a
group by id
order by id;
--son hali
--8
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;
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
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 )
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,
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;
--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
--kapital task:
--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);
21) --oop,power,dax
--surragate key 12c, virtual column;
--generated always as identity
--generated by default as identity
--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
--ERD
22) drop table wwa_invoices;
insert all
into table1 values()
into table1 values()
into table1 values()
subquery;
insert all
into table1
into table1
into table1
into table1
subquery;
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;
--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 regexp_instr();
--grouping_sets
select regexp_replace('Vusale Babayeva Cahid qizi','^(\S*)','oracle') 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;
--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 * FROM
(select a.*,dense_rank() over (partition by filial_code order by
amount_azn DESC) as mydense
from loan_contract a) WHERE mydense<=3;
--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 ;
/
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;
/
--online
12c+;
select * from v$version;
--SYS_P22
select * from documents where act_date between '01-apr-2007'
and '30-apr-2007';
25) /*declare
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;
/
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;
/
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;
/
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
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;
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;
*/