PLSQL 練習題目

2021-10-24 11:49:48 字數 2924 閱讀 7411

--1.sql練習:查詢emp表各個部門的總工資

select deptno,sum(sal) from emp group by deptno;

--2.sql練習:找到emp表中部門總工資最高的那個部門

select *

from (select deptno,

sum(sal) sum_sal

from emp

group by deptno

order by sum_sal desc)

where rownum = 1;

--3.sql練習:找到emp表中部門總工資最高的那個部門中工資最低的員工的所有資訊 

select *

from (select *

from emp

where deptno = (select deptno

from (select deptno,sum(sal) sum_sal

from emp

group by deptno

order by sum_sal desc)

where rownum = 1)

order by sal asc)

where rownum = 1;

--4.匿名塊練習: 按部門分段(大於2500、(1400,2500)、1400元以下)

--統計各工資段的職工人數、以及各部門的工資總額(工資總額不包括獎金)

declare

--lv_count_1 number;       -->2500

lv_count_2 number;       -->1400 <2500

lv_count_3 number;       --<1400

lv_sumsal  number;

--cursor cur_dept_num

isselect deptno from emp group by deptno order by deptno;

--cursor cur_emp_sal(dno in number)

isselect sal from emp where deptno = dno;

--begin

--dbms_output.put_line(rpad('部門',10) || rpad('<1400',10) || rpad('1400< <2500',15) || rpad('>2500',10) || '総給料');

for lv_deptno in cur_dept_num loop

lv_count_1 := 0;

lv_count_2 := 0;

lv_count_3 := 0;

select sum(sal) into lv_sumsal from emp where deptno = lv_deptno.deptno;

for lv_sal in cur_emp_sal(lv_deptno.deptno) loop

if lv_sal.sal > 2500 then

lv_count_1 := lv_count_1 + 1;

elsif lv_sal.sal between 1400 and 2500 then

lv_count_2 := lv_count_2 + 1;

else

lv_count_3 := lv_count_3 + 1;

end if;

end loop;

dbms_output.put_line(rpad(lv_deptno.deptno,10) || rpad(lv_count_3,10) || rpad(lv_count_2,15) || rpad(lv_count_1,10) || lv_sumsal);

end loop;

--exception

when others then

dbms_output.put_line('err:' || sqlerrm);

--end;

--5.匿名塊練習:已知all_tables記錄資料庫中所有表的資訊

declare

--lv_data_count number;

lv_sql varchar2(2000);

--cursor cur_table_info

isselect owner,table_name,tablespace_name from all_tables where table_name like 'cux%';

--begin

dbms_output.put_line(rpad('data_count',20,'-') || rpad('owner',10,'-') || rpad('table_name',30,'-') || 'tablespace');

for rec_table_info in cur_table_info loop

begin

lv_sql := 'select count(1) from ' || rec_table_info.table_name;

execute immediate lv_sql into lv_data_count;

dbms_output.put_line(rpad(lv_data_count,20) || rpad(rec_table_info.owner,10) || rpad(rec_table_info.table_name,30) || rec_table_info.tablespace_name);

exception

when others then

dbms_output.put_line(rec_table_info.table_name || ' is not exist');

end;

end loop;

exception

when others then

dbms_output.put_line('err:' || sqlerrm);

end;

python練習題目

三色球問題 有紅 黃 藍三種顏色的求,其中紅球 3 個,黃球 3 個,綠球 6 個。先將這 12 個球混合放在乙個盒子中,從中任意摸出 8 個球,程式設計計算摸出球的各種顏色搭配。print red tyellow tblue for red inrange 0,4 for yellow in ra...

Hive練習題目

hive 基本操作 1 資料自己造 a表 id int,name string b表 id int,job id int,num int c表 job id int,job string 建表語句 載入資料 a表和b表進行鏈結操作,並觀察結果 內連線 左連線 left join 小表在前,大表在後 ...

練習題目2

1 將陣列a中的內容和陣列b中的內容進行交換 陣列一樣大 思路 新建乙個陣列作為中間陣列進行交換.如下 2 計算1 1 1 2 1 3 1 4 1 5 1 99 1 100的值.思路 通過每一輪迴圈給分子乘以 1來控制加數的正負號,計算出和.如下 3 編寫程式數一下1到199的所有整數 現過多少次數...