【Oracleエクササイズの共有1】
3492 ワード
HRユーザーログインのデフォルトパスワードはHRです.
--【1.給与が12000以上の従業員の名前と給与を照会する】
--【2.従業員番号176の従業員の名前と部門番号の照会】
--【3.給与が5000~12000以外の従業員の氏名と給与を選択】
--【4.1998-02-01から1998-05-01までの従業員の名前、job_id、および雇用時間を選択します】
--【5.20または50番部署で働く従業員の名前と部署番号を選択】
--【6.1994年に雇用された従業員の名前と雇用時間を選択】
--【7.会社に管理者がいない社員の名前とjob_idを選ぶ】
--【8.会社にボーナスがある従業員の名前、給与、ボーナスレベルを選択する--検討する必要があります】
--【9.社員名の3文字目はaの社員名を選択】
--【10.名前にアルファベットaとeが入っている従業員の名前を選択】
--【11.システム時間表示】
--【12.従業員番号、氏名、賃金、および賃金が20%上昇した結果(new salary)】
--【13.従業員の名前を頭文字で並べ替え、名前の長さを書く】
--【14.各従業員の氏名を照会し、各従業員が会社に勤務する月数を表示する】
--【15.従業員の名前と、会社で働いている月数(worked_month)を調べ、月数降順に並べます】
--【1.給与が12000以上の従業員の名前と給与を照会する】
select first_name ||' '|| last_name as ,salary from employees where salary>12000 ;
--【2.従業員番号176の従業員の名前と部門番号の照会】
select first_name ||' '|| last_name as ,d.department_id from employees
join departments d on employees.department_id = d.department_id and employee_id=176;
--【3.給与が5000~12000以外の従業員の氏名と給与を選択】
select first_name ||''|| last_name as ,salary from employees where
salary<5000 or salary>12000;
select first_name ||''|| last_name as ,salary from employees where salary
not between 5000 and 12000;
--【4.1998-02-01から1998-05-01までの従業員の名前、job_id、および雇用時間を選択します】
select first_name ||''|| last_name as ,e.job_id,e.hire_date from employees e
where e.hire_date between to_date('1998-02-01','yyyy-MM-dd')
and to_date('1998-05-01','yyyy-MM-dd') ;
--【5.20または50番部署で働く従業員の名前と部署番号を選択】
select first_name ||''|| last_name as ,e.department_id from employees e
where e.department_id=20 or e.department_id=50;
--【6.1994年に雇用された従業員の名前と雇用時間を選択】
select e.first_name,e.hire_date from employees e where e.hire_date
between to_date('1994-01-01','yyyy-MM-dd') and to_date('1994-12-31','yyyy-MM-dd') ;
--【7.会社に管理者がいない社員の名前とjob_idを選ぶ】
select first_name ||''|| last_name as ,job_id from employees e
where e.manager_id is null ;
--【8.会社にボーナスがある従業員の名前、給与、ボーナスレベルを選択する--検討する必要があります】
Select initcap(concat(last_name,first_name)) " ",salary,commission_pct from employees where commission_pct is not null;
Select initcap(concat(last_name,first_name)) " ",salary,commission_pct from employees where nvl2(commission_pct, commission_pct,0)>0;
select initcap(concat(last_name,first_name)) " ", commission_pct from employees where nvl(commission_pct,0)<>0;
--【9.社員名の3文字目はaの社員名を選択】
select first_name ||''|| last_name as from employees e
where e.first_name like '__a%' and e.last_name like '__a%';
--【10.名前にアルファベットaとeが入っている従業員の名前を選択】
select first_name ||' '|| last_name as from employees e where e.first_name
like '%a%' and e.first_name like '%e%' and e.last_name like'%a%'
and e.last_name like'%e%';
--【11.システム時間表示】
select sysdate from dual;
--【12.従業員番号、氏名、賃金、および賃金が20%上昇した結果(new salary)】
select e.employee_id,first_name ||''|| last_name as ,e.salary ,
e.salary*1.2 newSalary from employees e;
--【13.従業員の名前を頭文字で並べ替え、名前の長さを書く】
select e.employee_id,first_name ||''|| last_name as ,
length(e.last_name||e.first_name) from employees e order by e.first_name;
--【14.各従業員の氏名を照会し、各従業員が会社に勤務する月数を表示する】
select e.employee_id,first_name ||' '|| last_name as
,round(months_between(sysdate,e.hire_date)) from employees e;
--【15.従業員の名前と、会社で働いている月数(worked_month)を調べ、月数降順に並べます】
select e.employee_id,first_name ||' '|| last_name as
,round(months_between(sysdate,e.hire_date)) as sda
from employees e order by sda desc;