Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Допы 2012.docx
Скачиваний:
11
Добавлен:
24.09.2019
Размер:
125.27 Кб
Скачать
  1. Создать запрос для определения сумм зарплат сотрудников от сотрудников, не имеющих менеджеров, до сотрудников, не имеющих подчиненных.

WITH t AS (

SELECT rownum rn, SYS_CONNECT_BY_PATH(salary,'+') || '+' sal, LTRIM(SYS_CONNECT_BY_PATH(last_name,'->'),'->') res

FROM employees

WHERE employee_id NOT IN

(SELECT distinct manager_id

FROM employees

WHERE manager_id IS NOT NULL)

START WITH manager_id IS NULL

CONNECT BY PRIOR employee_id=manager_id)

SELECT (SELECT SUM(salary)

FROM (SELECT distinct salary FROM employees)

WHERE sal LIKE '%+'||salary||'+%') ss, res

FROM t;

  1. Выборы президента сша

SELECT (CASE

WHEN mod(to_number(to_char(to_date('&&pdate'),'YYYY')),4)=0

THEN

CASE

WHEN to_date('&pdate')<= to_date(Concat('01.11.',to_char(to_date('&pdate'),'YYYY')))

THEN NEXT_DAY(next_day(Concat('31.10.',to_char(to_date('&pdate'),'YYYY')),2),1)

ELSE NEXT_DAY(next_day(Concat('31.10.',to_char(to_date('&pdate'),'YYYY')+4),2),1)

END

WHEN mod((to_number(to_char(to_date('&pdate'),'YYYY'))+1),4)=0

THEN

CASE

WHEN (to_date('&pdate')+365)<= Concat('01.11.',to_char(to_date('&pdate'),'YYYY')+1)

THEN NEXT_DAY(next_day(Concat('31.10.',to_char(to_date('&pdate'),'YYYY')+1),2),1)

ELSE NEXT_DAY(next_day(Concat('31.10.',to_char(to_date('&pdate'),'YYYY')+5),2),1)

END

WHEN mod((to_number(to_char(to_date('&pdate'),'YYYY'))+2),4)=0

THEN

CASE

WHEN (to_date('&pdate')+365*2)<= Concat('01.11.',to_char(to_date('&pdate'),'YYYY')+2)

THEN NEXT_DAY(next_day(Concat('31.10.',to_char(to_date('&pdate'),'YYYY')+2),2),1)

ELSE NEXT_DAY(next_day(Concat('31.10.',to_char(to_date('&pdate'),'YYYY')+6),2),1)

END

WHEN mod((to_number(to_char(to_date('&pdate'),'YYYY'))+3),4)=0

THEN

CASE

WHEN (to_date('&pdate')+365*3)<= Concat('01.11.',to_char(to_date('&pdate'),'YYYY')+3)

THEN NEXT_DAY(next_day(Concat('31.10.',to_char(to_date('&pdate'),'YYYY')+3),2),1)

ELSE NEXT_DAY(next_day(Concat('31.10.',to_char(to_date('&pdate'),'YYYY')+7),2),1)

END

END) AS "USA President election "

FROM dual;

Undefine pdate

  1. Плотный ранг

SELECT last_name,r.salary,r.department_id,r.rank

FROM EMPLOYEES em,

(SELECT e.salary,e.department_id, sal_num-dep_num AS RANK

FROM(

SELECT salary,department_id,rownum AS sal_num

from(

SELECT distinct salary, department_id

FROM EMPLOYEES

WHERE department_id is not null

ORDER BY department_id, salary desc

)

) e,

(SELECT min(dep_num)-1 AS dep_num,department_id

FROM(

SELECT department_id, rownum AS dep_num

from(

SELECT distinct salary, department_id

FROM EMPLOYEES

WHERE department_id is not null

ORDER BY department_id, salary desc

)

)

GROUP BY department_id

) d

WHERE e.department_id=d.department_id) r

WHERE em.salary=r.salary and em.department_id=r.department_id

ORDER BY department_id, salary desc