Учебное пособие Омск • 2008 Федеральное агентство по образованию




НазваниеУчебное пособие Омск • 2008 Федеральное агентство по образованию
страница9/15
Дата15.01.2013
Размер1.47 Mb.
ТипУчебное пособие
1   ...   5   6   7   8   9   10   11   12   ...   15
30

Использование переменных вместо названий таблиц позволяет j I сократить размер кода создаваемого запроса и сделать его более i I читаемым.

45. Вывести список сотрудников и суммарную зарплату каждого (рис. 16):

- в VFP, MS SQL Server, Access:

SELECT Name, Lastname, Surname, d.Tnumber, SUM(Sum_pay) FROM Staff d, Pay f WHERE (d.Tnumber = f.Tnumber) GROUP BY d.Tnumber

- в Oracle:

SELECT Surname, d.Tnumber, SUM(Sum_pay) FROM

ADMINPAY. Staff d, ADMINPAY.Pay f WHERE (d.Tnumber = f.Tnumber) GROUP BY d.Tnumber, Surname;



Name

Lastname

Surname

Т number

Sum_sum_pay

Иван

Петрович

Иванов

1

19607.00

Василий

Михайлович

Сидоров

2

5732.00

Петр

Аркадьевич

Васильков

3

7595.00

Савел

Игнатьевич

Соянов

4

2456.00

Рис. 16. Результат запроса

46. Вывести список сотрудников, получающих одну из следующих
надбавок к зарплате: 'премию', 'оплату учебы', 'поощрение', и коды их
зарплат:


- в VFP, MS SQL Server, Access:

SELECT Name, Lastname, Surname, b.Code_pay FROM Staff a, Pay b, Items_pay с WHERE b.Code_pay = c.Code_pay AND a.Tnumber = b.Tnumber AND Item_pay ПЧ('премия', 'оплата учебы', 'поощрение')

- в Oracle:

SELECT Name, Lastname, Surname, b.Code_pay FROM ADMINPAY.Staff a, ADMINPAY.Pay b, ADMIN_PAY.Items_pay с WHERE b.Code_pay = c.Code_pay AND a.Tnumber = b.Tnumber AND Item_pay Щ('премия', 'оплата учебы', 'поощрение');

Выбор результата в курсор.

47. Вывести все сведения о зарплатах сотрудника с фамилией 'Алеев'
и именем 'Павел' и поместить результат во временную таблицу с
названием
Tempi:

- в VFP:

SELECT Name, Lastname, Surname, Sum_pay, PayDay FROM Staff, Pay INTO CURSOR Tempi WHERE (Staff.Tnumber = Pay.Tnumber) AND Surname = 'Алеев' AND Name = 'Павел'

31

- в MS SQL Server:

Declare TEMPI CURSOR FOR SELECT Name, Lastname, Surname, Sum_pay, PayDay FROM Staff, Pay WHERE (Staff.Tnumber = Pay.Tnumber) AND Surname = 'Алеев' AND Name = 'Павел'

- в Oracle (с примером построчного вывода данных из курсора):
SET SERVEROUTPUT ON

DECLARE

Namel ADMINPAY. Staff .Name%T YPE; Lastname 1 ADMINPAY. Staff.Lastname%T YPE; Surname 1 ADMINPAY. Staff. Surname%T YPE; Sum_pay 1 ADMINPAY.Pay. Sum_pay%TYPE; PayDayl ADMIN_PAY.Pay.Pay_Day%TYPE;

CURSOR TEMPI IS SELECT Name, Lastname, Surname, Sum_pay, PayDay FROM ADMINPAY. Staff, ADMINPAY.Pay WHERE (Staff. Tnumber = Pay.Tnumber) AND Surname = 'Алеев' AND Name = 'Павел';

BEGIN

OPEN TEMPI;

WHILE TEMPI%found LOOP

FETCH TEMPI INTO Namel, Lastnamel, Surnamel, Sum_payl, PayDayl;

DBMS_OUTPUT.PUT_LINE(Namel|r '|| Lastnamel||' '||Surnamel||' '|| Sum_payl||' '|| PayDayl);

END LOOP;

CLOSE TEMPI;

END;

i Для того чтобы использовать результаты запроса в дальнейшем :
| коде программы, необходимо запрос сохранить либо на диске в ;
| таблице (ключевая фраза
INTO DBF или INTO TABLE) с заданным j
i
названием, либо во временной таблице, которая сохраняется только на j
i период работы программы или в рамках сессии. :

i INTO CURSOR - поместить результат запроса во временную :
; таблицу с указанным названием (в примере
Tempi), которая будет ;
; удалена из памяти по окончании работы программы. ;

48. Вывести все сведения о сотрудниках с табельными номерами 12-54 и поместить результат во временную таблицу с названием Тетр2 (рис. 17):

- в VFP:

SELECT * FROM Staff INTO CURSOR Temp2 WHERE Tnumber BETWEEN 12 AND 54

32

- в MS SQL Server:

Declare Temp2 CURSOR FOR SELECT * FROM Staff WHERE Tnumber BETWEEN 12 AND 54

- в Oracle:
DECLARE

CURSOR TEMPI IS SELECT * FROM ADMINPAY. Staff WHERE Tnumber BETWEEN 12 AND 54; BEGIN Null; END;

T number

Surname

Name

Lastname

Birthday

15

Иванова

Анна

Михайловна

12.03.1960

Date_input

12.11.1979

Рис. 17. Фрагмент выбора результата в курсор

Использование совместно с подзапросом квантора существования. 49. Вывести неповторяющийся список сотрудников, которые получали премию:

- в VFP, MS SQL Server, Access:

SELECT DISTINCT Name, Lastname, Surname FROM Staff, Pay WHERE Staff.Tnumber = Pay.Tnumber AND EXISTS(SELECT * FROM Items_pay WHERE Items_pay.Code_pay = Pay.Code_pay AND пет_рау='премия')

- в Oracle:

SELECT DISTINCT Name, Lastname, Surname FROM ADMINPAY. Staff, ADMINPAY.Pay WHERE Staff. Tnumber = Pay.Tnumber AND EXISTS(SELECT * FROM ADMIN_PAY.Items_pay WHERE Items_pay.Code_pay = Pay.Code_pay AND Item_pay- премия');

EXISTS( ) - квантор существования, понятие, заимствованное из формальной логики. Возвращает два значения: либо ИСТИНА, либо ЛОЖЬ. ИСТИНА - если условие, указанное в скобках, выполнилось и имеет ненулевой результат, ЛОЖЬ - если условие вернуло пустое множество.

50. Вывести список сотрудников, которые ни разу не получали зарплаты:

- в VFP, MS SQL Server, Access:

SELECT Surname, Name, Lastname FROM Staff WHERE NOT EXISTS(SELECT * FROM Pay WHERE Staff. Tnumber = Pay.Tnumber)

33

- в Oracle:

SELECT Surname, Name, Lastname FROM ADMINPAY. Staff WHERE NOT EXISTS(SELECT * FROM ADMINPAY.Pay WHERE Staff. Tnumber = Pay.Tnumber);

51. Вывести список сотрудников, у которых размер зарплаты не меньше 3000 руб. (рис. 18):

- в VFP, MS SQL Server, Access:

SELECT Surname, Name, Lastname FROM Staff WHERE EXISTS(SELECT * FROM Pay WHERE Staff. Tnumber = Pay.Tnumber AND Sum_pay >=3000)

- в Oracle:

SELECT Surname, Name, Lastname FROM ADMINPAY. Staff WHERE EXISTS(SELECT * FROM ADMINPAY.Pay WHERE Staff.Tnumber = Pay.Tnumber AND Sum_pay >=3000);



Surname

Name

Lastname

Иванов

Иван

Петрович

Васильков

Петр

Аркадьевич

Рис. 18. Результат запроса

с использованием квантора

существования

Использование функций совместно с подзапросом. 52. Вывести список сотрудников и даты с размерами полученных зарплат, которые превысили средний размер их же зарплат (рис. 19):

- в VFP, MS SQL Server, Access:

SELECT Surname, Name, Lastname, Sum_pay, PayDay FROM Staff INNER JOIN PAY ON Staff. Tnumber = Pay.Tnumber WHERE Pay.Sum_pay>(SELECT AVG(Sum_pay) FROM Pay)

- в Oracle:

SELECT Surname, Name, Lastname, Sum_pay, PayDay FROM ADMINPAY. Staff INNER JOIN ADMINPAY.PAY ON Staff. Tnumber = Pay.Tnumber WHERE Pay.Sum_pay>(SELECT AVG(Sum_pay) FROM ADMINPAY.Pay);



Surname

Name

Lastname

Sum_pay

Pay_day

Иванов

Иван

Петрович

12542.00

01.03.2003

Иванов

Иван

Петрович

4521.00

01.02.2003

Васильков

Петр

Аркадьевич

4511.00

01.01.2003

Рис. 19. Результат запроса с подзапросом

1   ...   5   6   7   8   9   10   11   12   ...   15

Похожие:

Учебное пособие Омск • 2008 Федеральное агентство по образованию iconУчебное пособие омск 2008 федеральное агентство по образованию государственное образовательное учреждение высшего профессионального образования
Учебное пособие предназначено для студентов и аспирантов высших учебных заведений, специализирующихся в области физики конденсированного...
Учебное пособие Омск • 2008 Федеральное агентство по образованию iconУчебное пособие Омск 2009 министерство образования и науки российской федерации федеральное агентство по образованию
Пушнина Западной Сибири: лосновы товароведения и ранок: учебное пособие / О. В. Гончарова Омск: Издатель ип погорелова, 2009. – 362...
Учебное пособие Омск • 2008 Федеральное агентство по образованию iconУчебное пособие Тамбов 2008 федеральное агентство по образованию тамбовский государственный университет им. Г. Р. Державина эмпирическая социология учебное пособие для студентов, обучающихся по специальности
Белинская Д. В., кандидат социологических наук (Предисловие, Раздел Специфика социологического метода, Раздел Методы социологического...
Учебное пособие Омск • 2008 Федеральное агентство по образованию iconУчебное пособие Челябинск 2006 Министерство образования и науки Российской Федерации Федеральное агентство по образованию
Учебное пособие предназначено для студентов университета дневной и заочной форм обучения по специальности физическая культура
Учебное пособие Омск • 2008 Федеральное агентство по образованию iconУчебное пособие томск 2007 Федеральное агентство по образованию

Учебное пособие Омск • 2008 Федеральное агентство по образованию iconУчебное пособие 2010 Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования
Приемы программирования в среде visual basic for application: учебное пособие / Ф. И. Воробьева, Е. С. Воробьев. – Казань: Изд-во...
Учебное пособие Омск • 2008 Федеральное агентство по образованию iconУчебное пособие ч елябинск 2 006 Министерство образования и науки Российской Федерации Федеральное агентство по образованию Южно-Уральский государственный университет Кафедра «Основы медицинских знаний»
Учебное пособие предназначено для студентов университета дневной и заочной форм обучения по специальности «Физическая культура»
Учебное пособие Омск • 2008 Федеральное агентство по образованию iconУчебное пособие 2010 Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования
Интеллектуальная автоматика в курсовых и дипломных проектах: учебное пособие (Том 2)/ В. П. Ившин, М. Ю. Перухин, И. А. Дюдина, А....
Учебное пособие Омск • 2008 Федеральное агентство по образованию iconФедеральное агентство по образованию государственное образовательное учреждение высшего профессионального образования
Биохимия белков и ферментов : учеб метод пособие / С. Е. Синютина, С. В. Романцова; Федеральное агентство по образованию, гоувпо...
Учебное пособие Омск • 2008 Федеральное агентство по образованию iconУчебное пособие Архангельск Поморский университет
Федеральное агентство по образованию Государственное образовательное учреждение высшего профессионального образования
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница