Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Main_Table PK User_Constraints 2 страница

CURRENT_YEAR MON TUE WED THU FRI SAT SUN | Z23456789 123456789 123456789 123456789 80 symbols | Main_Table PK User_Constraints 4 страница | Main_Table PK User_Constraints 5 страница | Main_Table PK User_Constraints 6 страница | Main_Table PK User_Constraints 7 страница | Main_Table PK User_Constraints 8 страница | Main_Table PK User_Constraints 9 страница | Main_Table PK User_Constraints 10 страница | Main_Table PK User_Constraints 11 страница |


Читайте также:
  1. 1 страница
  2. 1 страница
  3. 1 страница
  4. 1 страница
  5. 1 страница
  6. 1 страница
  7. 1 страница

(select номер_студента, min(r) min_r

from t1

group by номер_студента) – можно же сразу добавить partition by в row_number

/*Определяем номер первого вхождения для каждого студента.*/

 

select case r when min_r then фамилия else ' ' end ФИО,

/*Выводим фамилию только в случае первого вхождения.*/

название "Дисциплина", оценка "Оценка", дата "Дата",

case min_d when дата then ' ' else 'Пересдача' end "Примечания"

/*Заполняем столбец "Примечания", если дата сдачи экзамена не совпадает с датой первой попытки.*/

from t1 inner join t2 using(номер_студента);

 

б) ВОЗМОЖНО, НЕВЕРНО

select Фамилия ФИО, Название, Оценка, Дата,

(select case min(Дата) when у2.Дата then ' ' else 'Пересдача' end

from Успеваемость у1

where у1.номер_студента = у2.номер_студента and у1.номер_дисциплины = у2.номер_дисциплины

group by номер_студента, номер_дисциплины) примечание

from Успеваемость у2 inner join студенты on (у2.номер_студента = студенты.номер_студента) inner join дисциплины on (у2.номер_дисциплины = дисциплины.номер_дисциплины)

 
 

order by Фамилия, Дата

 

9. В таблицу записана информация, об удачных и неудачных попытках подключения к базе данных (Пользователь, Время, Удачно\Неудачно). Требуется получить список пользователей, которые совершили подряд три неудачные попытки подключения. После трех подряд неудачных попыток отсчет попыток начинается с начала.

 

ВОЗМОЖНО, НЕВЕРНО

/*create table Подключения

(Пользователь varchar2(30),

Время date,

"Удачно/Неудачно" varchar(4));

commit;

 

insert into Подключения values ('igovla', sysdate, 'fail');

insert into Подключения values ('babka', sysdate, 'fail');

insert into Подключения values ('babka2', sysdate, 'ok');

insert into Подключения values ('igovla', sysdate, 'fail');

insert into Подключения values ('babka', sysdate, 'fail');

insert into Подключения values ('babka2', sysdate, 'ok');

insert into Подключения values ('igovla', sysdate, 'fail');

insert into Подключения values ('babka', sysdate, 'fail');

insert into Подключения values ('babka2', sysdate, 'fail');

insert into Подключения values ('igovla', sysdate, 'fail');

insert into Подключения values ('babka', sysdate, 'ok');

insert into Подключения values ('babka2', sysdate, 'fail');

insert into Подключения values ('igovla', sysdate, 'fail');

insert into Подключения values ('babka', sysdate, 'fail');*/

 

SELECT rownum rn, n

FROM (SELECT rn, n, sm - nvl(last_value(err ignore nulls) over (partition by n order by rn), 0) chk

FROM (SELECT rn, n, nok, sm, case when sm-lag(sm,1) over (PARTITION BY n ORDER BY rn) = 0 then sm ELSE null END err

FROM (SELECT rn, n,nok, sum (nok) OVER (PARTITION BY n ORDER BY rn RANGE UNBOUNDED PRECEDING) sm

FROM (SELECT rn, n, c, CASE WHEN c='fail' THEN 1 ELSE 0 END nok

FROM (SELECT rownum rn,ПОЛЬЗОВАТЕЛЬ n, "Удачно/Неудачно" c

FROM ПОДКЛЮЧЕНИЯ)))))

 
 

WHERE chk!=0 and mod(chk,3)=0;

 

10. Создать запрос для вывода списка фамилий студентов-хвостистов с указанием дисциплин, которые им необходимо еще досдать в данную сессию. Названия дисциплин должны быть перечислены для каждого студента через запятую.

 

With

t as

(select distinct номер_студента, номер_дисциплины

from студенты с inner join группы г on с.номер_группы=Г.НОМЕР_ГРУППЫ

inner join учебные_планы уч on Г.КОД_СПЕЦИАЛЬНОСТИ=УЧ.КОД_СПЕЦИАЛЬНОСТИ

minus

select distinct номер_студента, номер_дисциплины

from успеваемость

where оценка > 2)

/*Представление содержит перечень долгов для каждого студента.*/

select фамилия, wm_concat(название) долги

from t inner join студенты c on t.номер_студента=C.НОМЕР_СТУДЕНТА

inner join дисциплины д on t.номер_дисциплины=Д.НОМЕР_ДИСЦИПЛИНЫ

group by фамилия;

/*Соединяем представление с таблицами СТУДЕНТЫ и ДИСЦИПЛИНЫ

для вывода фамилий и названий дисциплин. Выводим долги в одну строку при помощи

функции wm_concat ()*/

 

 

 
 

Другой способ:

With

t as

--curr и prior для соединения строк позже при помощи sys_connect_by_path

(select distinct номер_студента, номер_дисциплины,

row_number() over (partition by номер_студента order by номер_дисциплины) as curr,

row_number() over (partition by номер_студента order by номер_дисциплины) -1 as prev

from

(select distinct номер_студента, номер_дисциплины

from студенты с inner join группы г on с.номер_группы=Г.НОМЕР_ГРУППЫ

inner join учебные_планы уч on Г.КОД_СПЕЦИАЛЬНОСТИ=УЧ.КОД_СПЕЦИАЛЬНОСТИ

minus

select distinct номер_студента, номер_дисциплины

from успеваемость

where оценка > 2))

/*Представление содержит перечень долгов для каждого студента.*/

 

select фамилия, substr(max(SYS_CONNECT_BY_PATH(название, ',')), 2) долги

from t inner join студенты c on t.номер_студента=C.НОМЕР_СТУДЕНТА

inner join дисциплины д on t.номер_дисциплины=Д.НОМЕР_ДИСЦИПЛИНЫ

group by фамилия

connect by prev = prior curr and фамилия = prior фамилия

start with curr = 1;

/*Соединяем представление с таблицами СТУДЕНТЫ и ДИСЦИПЛИНЫ

для вывода фамилий и названий дисциплин. Выводим долги в одну строку при помощи

 
 

функции sys_connect_by_path*/

 

11. Создать запрос для вывода списка фамилий студентов с указанием количества несданных ими в сессию дисциплин.

 

With

t as

(select distinct номер_студента, номер_дисциплины

from студенты с inner join группы г on с.номер_группы=Г.НОМЕР_ГРУППЫ

inner join учебные_планы уч on Г.КОД_СПЕЦИАЛЬНОСТИ=УЧ.КОД_СПЕЦИАЛЬНОСТИ

minus

select distinct номер_студента, номер_дисциплины

from успеваемость

where оценка > 2)

/*Представление содержит перечень долгов для каждого студента.*/

select фамилия, count(номер_дисциплины)

from t right join студенты с on t.номер_студента=с.номер_студента

 
 

GROUP BY фамилия;

/*Считаем количество долгов.*/

 

 

12. В произвольной строке, состоящей из символьных элементов, разделенных запятыми, отсортировать элементы по алфавиту. Например, символьную строку

abc,cde,ef,gh,mn,test,ss, df,fw,ewe,wwe

преобразовать к виду:

abc,cde,df,ef,ewe, fw,gh,mn,ss,test,wwe.

 

--в одну строку

Select wm_concat(token)

from(

--разделяем строку на части

Select Trim(Substr (txt

, instr (txt, ',', 1, level) + 1

, instr (txt, ',', 1, level+1) - instr (txt, ',', 1, level) -1

)

)

AS token

from (select ',' || '&text' || ',' txt from dual)

connect by level <= length(txt)- length (replace(txt,',',''))-1

--сортируем

order by token);

 

 

Другой способ:

Select substr((max(sys_connect_by_path(token,','))),2) res

from(

--разделяем строку на части, r и r1 для последующего соединения

select token, rownum r, rownum+1 r1

from

(Select Trim(Substr (txt

, instr (txt, ',', 1, level) + 1

, instr (txt, ',', 1, level+1) - instr (txt, ',', 1, level) -1

)

)

AS token

from (select ',' || '&text' || ',' txt from dual)

connect by level <= length(txt)- length (replace(txt,',',''))-1

--сортируем

order by token))

connect by r = prior r1

start with r =1;

 

 
 

13. Создать запрос для вывода списка групп, в которых нет должников.

 

ВОЗМОЖНО, НЕВЕРНО

With

t as

(select distinct номер_студента, номер_дисциплины

from студенты с inner join группы г on с.номер_группы=Г.НОМЕР_ГРУППЫ

inner join учебные_планы уч on Г.КОД_СПЕЦИАЛЬНОСТИ=УЧ.КОД_СПЕЦИАЛЬНОСТИ

minus

select distinct номер_студента, номер_дисциплины

from успеваемость

where оценка > 2)

/*Представление содержит перечень долгов для каждого студента.*/

select distinct номер_группы

from группы

minus

select distinct номер_группы

from t inner join студенты с on t.номер_студента=с.номер_студента

group by номер_группы

having count(номер_дисциплины)>0

/*Из множества всех групп исключаем те, в которых общее количество долгов

у студентов больше 0.*/


14. Создать запрос для получения информации о группах:

Группа Кол-во студентов Название Специальности Кол-во круглых отличников Кол-во должников
         
         
……        

 

With

/*Оценки*/

t1 as

(select с.номер_студента, с.номер_группы, min(nvl(оценка,2)) min_Score

from студенты с inner join группы г on с.номер_группы=г.номер_группы

inner join учебные_планы уч on уч.код_специальности=г.код_специальности

left join успеваемость у on с.номер_студента=у.номер_студента and у.номер_дисциплины=уч.номер_дисциплины

GROUP BY с.номер_студента, с.номер_группы),

/*Должники*/

t2 as

(select номер_студента, номер_группы

from t1

where min_Score < 3), -студент мог пересдать полученную двойку

/*Отличники*/

t3 as

(select номер_студента, номер_группы

from t1

where min_Score = 5)

select номер_группы "Группа",

(select count(*) from студенты с where с.номер_группы = г.номер_группы) "Кол-во студентов",

название_специальности "Название Специальности",

(select count(*) from t3 where t3.номер_группы = г.номер_группы) "Кол-во круглых отличников",

(select count(*) from t2 where t2.номер_группы = г.номер_группы) "Кол-во должников"

from группы г inner join специальности сп on г.код_специальности=сп.код_специальности

GROUP BY номер_группы, название_специальности;


/*Считаем количество студентов, отличников и должников для каждой специальности.*/

 

15. Создать три таблицы Системы Автоматического Управления, Математическое Обеспечение ЭВМ, Вычислительные Сети и Системы. Используя возможности многотабличной вставки, записать в эти таблицы информацию о студентах в соответствии со специальностью, на которой они учатся.

 

CREATE TABLE САУ

(номер_студента number(5),

фамилия varchar2(15),

имя varchar2(15),

отчество varchar2(15),

стипендия number(7,2),

номер_группы varchar2(15));

 

CREATE TABLE Математическое_Обеспечение_ЭВМ

(номер_студента number(5),

фамилия varchar2(15),

имя varchar2(15),

отчество varchar2(15),

стипендия number(7,2),

номер_группы varchar2(15));

 

CREATE TABLE Вычислительные_Сети_и_Системы

(номер_студента number(5),

фамилия varchar2(15),

имя varchar2(15),

отчество varchar2(15),

стипендия number(7,2),

номер_группы varchar2(15));

 

COMMIT;

 

INSERT ALL

WHEN код_специальности = 1

THEN INTO САУ VALUES (номер_студента, фамилия, имя, отчество, стипендия, номер_группы)

WHEN код_специальности = 2

THEN INTO Математическое_Обеспечение_ЭВМ VALUES (номер_студента, фамилия, имя, отчество, стипендия, номер_группы)

WHEN код_специальности = 3

THEN INTO Вычислительные_Сети_и_Системы VALUES (номер_студента, фамилия, имя, отчество, стипендия, номер_группы)

SELECT *

FROM студенты NATURAL JOIN группы NATURAL JOIN специальности;

COMMIT;

 

SELECT *

FROM САУ;


SELECT *

FROM Математическое_Обеспечение_ЭВМ;

SELECT *


FROM Вычислительные_Сети_и_Системы;

 

16. Создать представление для получения информации по специальностям: Средняя оценка среди студентов специальности, сдавших экзамены; Количество студентов специальности, сдавших экзамены, Общее количество студентов на специальности.

 

drop view report_view;

CREATE VIEW Report_View ("Название специальности", "Средняя оценка", "Количество сдавших", "Всего студентов") AS

SELECT название_специальности, avg_score, COUNT(*), studs

FROM(

--выборка средних баллов студентов на специальности

SELECT DISTINCT название_специальности, номер_студента, AVG(оценка) OVER (PARTITION BY название_специальности) avg_score,

--считаем количество студентов, обучающихся на каждой специальности

(SELECT COUNT(*) FROM Специальности NATURAL JOIN Группы NATURAL JOIN Студенты WHERE Специальности.название_специальности = x.название_специальности) studs

FROM(

--считаем высший балл

SELECT номер_студента, название_специальности, оценка, MIN(nvl(оценка,0)) OVER (PARTITION BY номер_студента) min_score

FROM Студенты NATURAL JOIN Группы NATURAL JOIN Специальности LEFT JOIN Учебные_планы USING (код_специальности)

LEFT JOIN Успеваемость USING (номер_студента, номер_дисциплины)/*не учитываем студентов, сдававших экзамены не по их специальности*/) x

WHERE min_score > 2)

GROUP BY название_специальности, avg_score, studs;

Select * from Report_View;


17. Увеличить вдвое стипендию студентам, которые сдали все предусмотренные учебным планом для их специальности экзамены с первого раза на отлично.

 

update студенты

set стипендия = стипендия * 2

where номер_студента in

(select номер_студента

from студенты left join группы using(номер_группы) left join учебные_планы using (код_специальности) left join успеваемость using(номер_студента, номер_дисциплины)

group by номер_студента

-- если бы сдали не все экзамены не с первого раза, то средняя оценка была бы меньше 5

having avg(nvl(оценка, 0))=5);

select * from студенты;

 

18. Создать запрос для вывода всех дат, отсутствующих в некоторой последовательности дат. Например, в списке

16-11-2008

18-11-2008

19-11-2008

23-11-2008

отсутствуют даты:

17-11-2008

20-11-2008

21-11-2008

22-11-2008

Граница последовательности дат должна определяться некоторым (в данном случае максимальным) значением даты.

 

Create table DateList (

dates date)

;

--тестовые данные

Insert All

Into DateList Values (TO_DATE('16-11-2008','DD-MM-YYYY'))

Into DateList Values (TO_DATE('18-11-2008','DD-MM-YYYY'))

Into DateList Values (TO_DATE('19-11-2008','DD-MM-YYYY'))

Into DateList Values (TO_DATE('23-11-2008','DD-MM-YYYY'))

select * from dual

commit

;

--генерируем даты в заданном промежутке

Select MinDate + level

From (Select min(dates) as MinDate, max(dates) as MaxDate From DateList)

CONNECT BY MinDate + level < MaxDate

Minus

--убираем те, которые уже есть

Select * From DateList

 
 

19. Создать запрос, который позволит получить информацию о таблицах схемы HR в виде:

Главная таблица Список столбцов первичного ключа Список подчиненных таблиц Список вторичных ключей
       

В качестве разделителей в списках использовать запятую. Для каждого вторичного ключа в скобках указать список столбцов.

 

ВОЗМОЖНО, НЕВЕРНО

with

cons as

(select table_name tn, constraint_type ct, CONSTRAINT_NAME cn, R_CONSTRAINT_NAME rn,column_name cn1

from all_constraints natural join all_cons_columns

where owner = 'HR'

And constraint_type in('R','P'))

/*Представление содержит необходимую информацию о таблицах схемы HR.*/

select c1.tn "Главная таблица",wm_concat(distinct c1.cn1) "Список столбцов первич ключа",

wm_concat(c2.tn) "Список подчиненных таблиц",wm_concat(c2.cn1) "Список вторичных ключей"

from cons c1 inner join cons c2 on c1.cn=c2.rn AND c1.ct='P'


group by c1.tn;

 

20. Создать запрос для распознавания строк, заключенных в двойные кавычки. Предполагается, что любой символ может быть в строке, в том числе и двойные кавычки, если им предшествует нечетное число обратных слэшей.

 

ВОЗМОЖНО, НЕВЕРНО

select mySubstr

from(select mySubstr

-- length(mySubstr) - length(Rtrim(mySubstr, '\') это собственно число обратных слешей в конце строки, считаем для каждой подстроки, получееной на предыдущем шаге

from (select mySubstr, length(mySubstr) - length(Rtrim(mySubstr, '\')) as slash_count

-- анализ строки, ищем level + 1 (+1, потому что первые кавычки это начало строки) вхождение кавычек. В таблицу помещаем подстроку от начала строки до текущих кавычек

from (select substr(input,1,instr(input, '"',1,level + 1) - 1) as mySubstr

-- обрезаем начало строки до первых двойных кавычек (т.к. искомая строка заключена между двойными кавычками)

from (select substr(input, instr(input, '"') + 1) as input

-- ввод строки

from (select '&input' as input from dual))

Connect by (instr(input, '"',1,level) > 0)))

-- выбираем только те подстроки, где в конце нет либо четное число слешей

where mod(slash_count, 2) = 0)

-- первая такая подстрока и будет ответом

where rownum = 1


ВАРИАНТ 5

(Базы данных Студент и Human Resources)

1. Создать запрос, возвращающий один столбец, содержащий календарь на текущий месяц текущего года:

· номер дня в месяце (две цифры),

· полное название месяца по-английски заглавными буквами (в верхнем регистре),

· год (четыре цифры),

· полное название дня недели по-английски строчными буквами (в нижнем регистре)

Каждое "подполе" должно быть отделено от следующего одним пробелом. В результате не должно быть начальных и хвостовых пробелов. Количество возвращаемых строк должно точно соответствовать количеству дней в текущем месяце. Строки должны быть упорядочены по номерам дней в месяце по возрастанию.

 

SELECT to_char(trunc(sysdate, 'mm')+level-1, 'dd fmMONTH yyyy day', 'NLS_DATE_LANGUAGE=AMERICAN') calendar

FROM DUAL

CONNECT BY level <= to_char(last_day(sysdate), 'dd')

ORDER BY substr(calendar, 1,2);

 

Результат:

CALENDAR

---------------------------

01 MAY 2012 tuesday

02 MAY 2012 wednesday

03 MAY 2012 thursday

04 MAY 2012 friday

05 MAY 2012 saturday

06 MAY 2012 sunday

07 MAY 2012 monday

29 MAY 2012 tuesday

30 MAY 2012 wednesday

31 MAY 2012 thursday

 

31 rows selected

 

Комментарий:

Обрезаем системную дату до месяца. Затем строим с помощью конструкции level календарь до последнего числа этого месяца. С помощью функции преобразования to_char приводим календарь к нужному виду(NLS_DATE_LANGUAGE=AMERICAN – для того, чтобы названия месяце и дней выводились на английском языке). Затем сортируем по номерам дней.

 

2. Создать запрос для вывода сведений о сотрудниках, которые подчиняются тем же непосредственным руководителям, что и сотрудники Rajs или Abel, работают в тех же подразделениях компании, что и сотрудники Rajs или Abel. Сведения о сотрудниках Rajs и Abel выводить не нужно

Требуется вывести: Фамилию сотрудника, Название должности сотрудника, Фамилию непосредственного руководителя сотрудника, Название подразделения компании, где работает сотрудник.

Сведения должны быть отсортированы по возрастанию: по названию подразделения компании, где работает сотрудник; по фамилии сотрудника.

 

SELECT t.last_name, jobs.job_title, e.last_name manager, d.department_name

FROM (SELECT last_name, job_id, manager_id, department_id

FROM employees

where (manager_id, department_id) in

(

select manager_id, department_id

from employees

where last_name in ('Rajs', 'Abel')

)

and last_name not in ('Rajs', 'Abel')

) t

INNER JOIN employees e

ON t.manager_id = e.employee_id

INNER JOIN jobs

ON jobs.job_id = t.job_id

INNER JOIN departments d

ON d.department_id = t.department_id

ORDER BY d.department_name, t.last_name;

 

LAST_NAME JOB_TITLE MANAGER DEPARTMENT_NAME

------------------- ----------------------------------- ------------------------- --------------------------------

Hutton Sales Representative Zlotkey Sales

Johnson Sales Representative Zlotkey Sales

Livingston Sales Representative Zlotkey Sales

Taylor Sales Representative Zlotkey Sales

Davies Stock Clerk Mourgos Shipping

Feeney Shipping Clerk Mourgos Shipping

Grant Shipping Clerk Mourgos Shipping

Matos Stock Clerk Mourgos Shipping

OConnell Shipping Clerk Mourgos Shipping

Vargas Stock Clerk Mourgos Shipping

Walsh Shipping Clerk Mourgos Shipping

 

11 rows selected

 

Комментарий:

В подзапросе выбираем сотрудников, которые подчиняются тем же руководителям, что и Rajs или Abel и работают в тех же подразделениях. При этом исключая информацию о самих Rajs или Abel. Затем полученную выборку соединяем с таблицей employers, чтобы узнать какой сотрудник какому менеждеру подчиняется. Потом соединяем с таблицей Jobs, чтобы узнать должность каждого сотрудника. И наконец соединяем с таблицей departments, чтобы определить департамент. Результат сортируем.


 

3. Создать запрос для вывода сведений о сотрудниках компании, оклады которых наиболее близки к среднему окладу по подразделению, к которому они приписаны. Требуется вывести: Идентификатор сотрудника, Фамилию сотрудника, Идентификатор должности, которую занимает сотрудник, Идентификатор подразделения, к которому приписан сотрудник, Оклад, установленный сотруднику, Средний оклад по подразделению, к которому приписан сотрудник (округлить до целых).

Сведения должны быть отсортированы по возрастанию: по идентификатору подразделения, к которому приписан сотрудник; по окладу, установленному сотруднику; по фамилии сотрудника.

 

WITH

tab1 AS (SELECT employee_id, last_name, job_id, department_id, salary, sal_dep, deviation,

rank() OVER (PARTITION BY department_id ORDER BY deviation) rn

FROM (SELECT employee_id, last_name, job_id, department_id, salary,

round(AVG(salary) OVER (PARTITION BY department_id)) sal_dep,

abs(salary-round(AVG(salary) OVER (PARTITION BY department_id))) deviation

FROM employees))

 

SELECT employee_id, last_name, job_id, department_id, salary, sal_dep

FROM tab1

WHERE rn =1 and department_id IS NOT NULL

ORDER BY department_id, salary, last_name;

 

EMP_ID LAST_NAME JOB_ID DEPARTMENT_ID SALARY SAL_DEP

 

200 Whalen AD_ASST 10 4400 4400

202 Fay MK_REP 20 6000 9500

201 Hartstein MK_MAN 20 13000 9500

115 Khoo PU_CLERK 30 3100 4150

203 Mavris HR_REP 40 6500 6500

141 Rajs ST_CLERK 50 3500 3476

104 Ernst IT_PROG 60 6000 5760

204 Baer PR_REP 70 10000 10000

152 Hall SA_REP 80 9000 8956

158 McEwen SA_REP 80 9000 8956

102 De Haan AD_VP 90 17000 19333

101 Kochhar AD_VP 90 17000 19333

110 Chen FI_ACCOUNT 100 8200 8600

109 Faviet FI_ACCOUNT 100 9000 8600

206 Gietz AC_ACCOUNT 110 8300 10150

205 Higgins AC_MGR 110 12000 10150

 

16 rows selected

 

Комментарий:

Выбираем средний оклад по подразделениям. Затем находим отклонения зарплаты каждого сотрудника от средней зарплаты и ранжируем по отклонению. Сведения о сотрудниках компании, оклады которых наиболее которых наиболее близки к среднему окладу по подразделению, к которому они приписаны находятся в строках, пронумерованных единицей (rn = 1).

 

4. Вывести информацию о сотрудниках, приписанных к отделам компании с номерами 10, 30, 50, 90.

Выборка должна быть отсортирована: по номеру отдела компании (по возрастанию); по окладу сотрудника (по убыванию); по фамилии сотрудника (по возрастанию).

Вывод команды SELECT должен содержать столбцы:

a. Сквозной порядковый номер сотрудника в выборке.

b. Порядковый номер сотрудника внутри подвыборки по подразделению компании.

c. Идентификатор подразделения компании, к которому приписан данный сотрудник.

d. Идентификатор должности сотрудника.

e. Фамилия сотрудника.

f. Оклад, установленный сотруднику.

g. Ранг оклада сотрудника в подразделении компании, где он работает (Самый большой
оклад имеет ранг=1, следующий - ранг=2 и т.д.)

Номер отдела должен быть выведен только один раз.

 

Пример результирующей выборки:

ЕМР_NUM ЕМР_NUM_IN_DEPT DEPTNO JOB ENAME SAL DEPT_SAL_RANK
      PRESIDENT KING    
      MANAGER CLARK    
      CLERK MILLER    
      MANAGER BLAKE    
      SALESMAN ALLEN    
      SALESMAN TURNER    
      SALESMAN MARTIN    
      SALESMAN WARD    
      CLERK JAMES    

 


Дата добавления: 2015-08-18; просмотров: 97 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Main_Table PK User_Constraints 1 страница| Main_Table PK User_Constraints 3 страница

mybiblioteka.su - 2015-2024 год. (0.067 сек.)