Буров: Отбор данных: Необходимо отобрать записи по заданному диапазону номеров филиалов, количеству штатных единиц и фрагменту названия должности. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Буров: Отбор данных: Необходимо отобрать записи по заданному диапазону номеров филиалов, количеству штатных единиц и фрагменту названия должности.



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

Схема БД представлена на рис. 1.

Рис. 1. Схема БД

CREATE PROCEDURE "Artyom"."Stavki" (in Nomer_fil_beg integer,

in Nomer_fil_end integer)

result(

Nomer_filiala integer,

Name_doljnosti varchar (50),

Kolvo_doljnostei varchar (2),

Kolvo_svob_stavok integer,

Zapolnennost numeric (6,2))

 

BEGIN

SELECT Nomer_filiala, Name_doljnosti,

sum(Kolvo_Shatnix_edinic),sum(Kolvo_Shatnix_edinic-Kolvo_zapolnennix_ stavok),

avg(100*Kolvo_zapolnennix_stavok/Kolvo_Shatnix_edinic)

FROM Shtat as b

JOIN Doljnosti as ps on b.Code_doljnosti = ps.Code_doljnosti

WHERE Nomer_filiala between Nomer_fil_beg and Nomer_fil_end

group by Nomer_filiala, Name_doljnosti

order by Nomer_filiala, Name_doljnosti

END

 

Буров.

На модуле данных располагаются 2 компонента TADOQuery и 2 компонента TDataSource (рис. 2).

Рис. 2. Модуль данных

 

Установим для qSDolz свойства: Connection= DB; SQL= SELECT * FROM DOLJNOSTI ORDER BY CODE_DOLJNOSTI; Active=True. Установка последнего свойства произошла без ошибки, значит тестирование НД прошло успешно.

Установим для qBook свойства: Connection= DB; SQL = SELECT * FROM SHTAT ORDER BY Nomer_filiala asc, Podrazdelenie asc.

Отобранные строки упорядочиваются с использованием раздела ORDER BY, в котором указаны колонки, по которым выполняется упорядочивание данных (колонка номер филиала Nomer_filiala, а затем колонка подразделение Podrazdelenie) и способ упорядочивания (asc задает упорядочивание по возрастанию). Установка свойства Active произошло без ошибки, значит тестирование НД прошло успешно.

Убывание – desc.

 

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

CREATE PROCEDURE "Andrey"."PeriodVr" (in Data_beg date,

in Data_end date,in v_type varchar(30))

result(

Name_uch varchar (50),

Month_rab varchar (7),

Kolichestvo integer,

Otr_vremya numeric(6,2),

Sr_otr_vremya numeric(6,2))

 

BEGIN

SELECT Name_uch, convert (varchar (4), Year(data))+ '-'+convert (varchar (2),Month(data)) as mes,

count(Name_uch),sum(Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.016667),

avg(Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.01666)

FROM Book_ucheta as b

JOIN Sprav_uch as su on b.Kod_uch = su.Kod_uch

WHERE Data between Data_beg and Data_end

and su.type_uch = v_type

group by Name_uch, mes

order by 1,2

END

Пилиева. Отбор данных: Необходимо отобрать записи по заданному диапазону номеров групп, по флагу «Задолженность» (если флаг включен, отображать группы с задолженностями, иначе не отображать) и фрагменту названия предмета.

Методы обработчиков кнопок отбора данных:

procedure TfrmBook.sbFindClick(Sender: TObject);

var where: string;

begin

DM.qBook.DisableControls;

DM.qBook.Close;

where:='';

if edN1.text<>'' then

where:='Num_group>=:n1';

if edN2.text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Num_group<=:n2';

 end;

 

if ch1.Checked=false then begin

if where<>'' then

where:=where+' and ';

where:=where+'Count_2<1';

end

else if ch1.Checked=true then begin

if where<>'' then

where:=where+' and ';

where:=where+'Count_2>0';

end;

 

if edPr.text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Cod_predm in (select Cod_predm from Sprav_predm where Name LIKE:pred)';

 end;

DM.qBook.SQL.clear;

DM.qBook.SQL.add('SELECT * FROM BOOK_USPEV ');

if where<>'' then

DM.qBook.SQL.add('WHERE '+where);

DM.qBook.SQL.add('ORDER BY Faculty asc, Num_group asc');

 

if edN1.text<>'' then

DM.qBook.Parameters.ParamByName('n1').Value:=StrToInt(edN1.text);

if edN2.text<>'' then

DM.qBook.Parameters.ParamByName('n2').Value:=StrToInt(edN2.text);

if edPr.text<>'' then

DM.qBook.Parameters.ParamByName('pred').Value:='%'+edPr.Text+'%';

DM.qBook.Open; DM.qBook.EnableControls; end;

 

Прилипко. Для заданного периода дат сформировать отчет с группировкой по услугам и заказчикам. По каждой группе вывести общий (суммарный) объем заказов, общую и среднюю стоимости заказа. Услуги должны удовлетворять следующим условиям: иметь заданный вид.

Схема БД представлена на рис. 1.

CREATE PROCEDURE "DBUser"."Otch" (in Data_beg date,

in Data_end date,in u_type varchar(30))

result(

Name varchar (50),

Zakazchik varchar (50),

Volume numeric (6,2),

Obsh_stoim numeric (8,2),

Sr_stoim numeric (8,2))

 

BEGIN

SELECT Name,Zakazchik,sum(Volume_usl),avg(Price_1h*Volume_usl),sum(Price_1h*Volume_usl)

FROM Zakaz_book as zb

JOIN Sprav_usl as su on zb.Kod_usl = su.Kod_usl

WHERE Data between Data_beg and Data_end

and su.type = u_type

group by Name, Zakazchik

order by Name, Zakazchik END

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

CREATE PROCEDURE "Vlad"."Otch" (in Data_beg date, in Data_end date,nkas integer)

result(

Num_cass integer,                      Month_rab varchar (7),

Kolichestvo integer,

Vyruchka numeric(6,2),              SrVyruchka numeric(6,2))

 

BEGIN           SELECT Num_cass,

CASE

When Month(data)<10 then convert (varchar (4), Year(data))+'-'+'0'+convert (varchar (2),Month(data))

else convert (varchar (4), Year(data))+'-'+convert (varchar (2),Month(data))

end as mes,

count(Num_cass),sum(Sum_prikhod-Sum_paskhod), avg(Sum_prikhod-Sum_paskhod)

FROM Cass_book as b

JOIN Sprav_cass as su on b.Kod_cassir = su.Kod_cassir

WHERE Data between Data_beg and Data_end

and left(b.Num_cass,1) = nkas

group by Num_cass, mes

order by 1, 2            END

Акс.

Для заданного периода дат сформировать отчет с группировкой по арендаторам и месяцам. По каждой группе вывести количество счетов, общую и максимальную стоимость услуг. Арендатор должен удовлетворять следующим условиям: иметь форму собственности «ООО» в названии

 

Данил.

7. Для заданного диапазона номеров мест хранения товара сформировать отчет с группировкой по поставщикам и номерам мест хранения. По каждой группе вывести общее количество, свободный остаток. Величина резерва должна составлять не более заданного процента от количества товара в данном месте хранения.

.

Чикина.Задание: Сформировать отчет с группировкой по департаментам. Для каждой группы вывести общее количество отработанных дней, израсходованных средств и среднюю величину израсходованных средств. В отчет включать отделы с номерами из заданного диапазона.

 

Программный код процедуры:

CREATE PROCEDURE "admin"."prd1"(in diapaz_begin integer, in diapaz_end integer)

result (Depart varchar (50),

   Kol_otr integer,

   Izpas_sr numeric(11,2),

   Sred_Izras numeric(11,2))

BEGIN

SELECT Depart,

  sum(kol_otr), sum(Izras_god), avg(Izras_god)

FROM Sprav_Otdel as sp

JOIN Kniga_Uch as k on sp.Kod_Otdel=k.Kod_Otdel

WHERE sp.kod_otdel between diapaz_begin and diapaz_end

 

 

GROUP BY Depart

END

МартыновВариант 13

Сформировать отчет с группировкой по факультетам и годам набора (выделить из номера группы). По каждой группе вывести общее количество студентов, групп и среднее число студентов в группе. На факультете должно быть не менее заданного количества кафедр.

 

Схема БД из Sybase Central представлена на рис. 1.

Текст процедуры:

ALTER PROCEDURE "admin"."lab4.1procedure"(Kolvo_kaf integer)

RESULT(Kratkoe_naim varchar(20),

Year_post varchar(4),

OB_kol_stud integer,

Kol_gr integer,

Avg_kol_stud numeric(10,2))

BEGIN

select Kratkoe_naim,

   substr(Nom_gr,length(Nom_gr)-1) as Year_post,

   sum(isnull(Kol_stud_male,0)+isnull(Kol_stud_female,0)),

   count(ku.Kod_facult),

   avg(isnull(Kol_stud_male,0)+isnull(Kol_stud_female,0))

from Kniga_ucheta ku

   join Spravochnik_Facultetov sf on ku.Kod_facult=sf.Kod_facult

where sf.Kol_kafedr>=Kolvo_kaf

 group by Kratkoe_naim, Year_post

order by Kratkoe_naim, Year_post

END

 

Шишков.22. Сформировать отчет за заданный год с группировкой по месяцам и моделям. По каждой группе вывести общую стоимость продаж, количество рекламаций и средний процент рекламаций. В отчет включать компьютеры, относящиеся к заданному типу.

 

Схема базы данных в Sybase Central представлена на рис. 1.       

Рис.1. Схема БД в Sybase Central

Текст процедуры “ModelOverview” представлен на рис 2.

 

 

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

CREATE PROCEDURE "Andrey"."PeriodVr" (in Data_beg date,

in Data_end date,in v_type varchar(30))

result(

Name_uch varchar (50),

Month_rab varchar (7),

Kolichestvo integer,

Otr_vremya numeric(6,2),

Sr_otr_vremya numeric(6,2))

 

BEGIN

SELECT Name_uch, convert (varchar (4), Year(data))+ '-'+convert (varchar (2),Month(data)) as mes,

count(Name_uch),sum(Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.016667),

avg(Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.01666)

FROM Book_ucheta as b

JOIN Sprav_uch as su on b.Kod_uch = su.Kod_uch

WHERE Data between Data_beg and Data_end

and su.type_uch = v_type

group by Name_uch, mes

order by 1,2

END

 

 

Задания с развёрнутым ответом:

 

Банковская книга

ЭТОТ ОТВЕТ СЧИТАЕТСЯ ОТЛИЧНЫМ

TADOConnection – отвечает за подключение к БД.

 

ADOConnection» ConnectionString» Use connection string» Build» SQL Anywhere OLE DB Provider» источник данных» пользователь и пароль» проверить соединение

Name=DB

keepConnection = true – Для поддержания соединения.

LoginPrompt true, после тестирования false

Connected true, после тестирования false

 

TADOQuery -qBankbook

– отправляет запрос и получает данные из БД. TADOConnection

Connection=DB

Name=qBankbook

SQL» SELECT *FROM Bankbook Order by dataOper desc

 

TDataSource –dsBankbook

помещает полученные данные в таблицы.

Connection» DB

DataSet=qBankbook

Name= dsBankbook

 

TDBGrid

DataSource=DM.dsBankbook

 

Дано описание таблицы БД. Реализовать отбор данных. Указать перечень, полей, перечень компонентов и написать метод отбора данных. Использовать не менее 5 полей для условий отбора Таблица Bookreal (Книга реализации) включает поля: Номер АЗС, номер колонки, код марки бензина, дата, объем заправки

Таблица содержит поля:

 - номер АЗС (nomerAZS)

 - номер колонки (nomKol)

 - код марки бензина (kodFuel)

 - дата (data)

 - объем заправки (obZ)

 

Форма просмотра содержит компоненты:

 - TDBGrid для вывода таблиц с данными

 - TEdit для отбора данных (edNA1, edNA2, edNK1, edNK2, edKF)

 

procedure TfrmBook.sbFindClick(Sender: TObject);

var where: string;

begin

DM.qBook.DisableControls;

DM.qBook.Close;

where:='';

if edNA1.Text<>'' then

where:='nomerAZS>=:na1';

if edNA2.Text<>'' then begin

if where<>'' then

where:=where+' and ';

where:=where+'nomerAZS<=:na2';

end;

if edNK1.Text<>'' then begin

if where<>'' then

where:=where+' and ';

where:=where+'nomKol>=:nk1';

end;

if edNK2.Text<>'' then begin

if where<>'' then

where:=where+' and ';

where:=where+'nomKol<=:nk2';

end;

if edKF.Text<>'' then begin

if where<>'' then

where:=where+' and ';

where:=where+'kodFuel like:kf';

end;

DM.qBook.SQL.Clear;

DM.qBook.SQL.Add('SELECT * FROM Kniga_ucheta ku JOIN Spravoch-nik_Facultetov sf ON ku.Kod_facult=sf.Kod_facult ');

if where<>'' then

DM.qBook.SQL.add('WHERE '+where);

DM.qBook.SQL.add(' ORDER BY ku.Kod_facult, ku.Nom_gr');

if edKF1.Text<>'' then

DM.qBook.Parameters.ParamByName('na1').Value:=StrToInt(edNA1.Text);

if edKF2.Text<>'' then

DM.qBook.Parameters.ParamByName('na2').Value:=StrToInt(edNA2.Text);

if edC1.Text<>'' then

DM.qBook.Parameters.ParamByName('nk1').Value:=StrToInt(edNK1.Text);

if edC2.Text<>'' then

DM.qBook.Parameters.ParamByName('nk2').Value:=StrToInt(edNK2.Text);

if edF.Text<>'' then

DM.qBook.Parameters.ParamByName('kf').Value:= '%'+edKF.Text+'%';

DM.qBook.Open;

DM.qBook.EnableControls;

end;

20 из 30

 

Написать процедуру формирования отчета. Схема данных: Книга учета: Марка компьютера, дата, ФИО покупателя, цена, количество. Справочник марок: Марка, наименование, тип процессора. Сформировать отчет за заданный период времени с группировкой по типу процессора с расчетом общего количества, стоимости продаж и средней ценой. В отчет включать ПК, у которых цена находится в заданном диапазоне, а цена продажи не менее заданной.

CREATE PROCEDURE "admin"."procedure"(in CenaBeg numeric(15,2), in CenaEnd numeric(15,2), in CenaProd integer)

RESULT(TipProc varchar(50),

  Period varchar(4),

  OBKol integer,

  OBCena numeric(15,2),

  SRCena numeric(15,2))

BEGIN

select TipProc,

  year(Date) as Period,

  sum(isnull(Kolvo,0)) as OBKol,

  sum(isnull(Cena,0)) as OBCena,

  avg(isnull(Cena,0)) as SRCena

from Kniga_ucheta ku

   join Spravochnik_Marok sm on ku.Marka=sm.Marka

where OBCena>=CenaProd and Cena between CenaBeg and CenaEnd

group by TipProc, Period

order by TipProc, Period

END

15 баллов из 30

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

ЭТОТ ОТВЕТ СЧИТАЕТСЯ ХОРОШИМ (20 из 30)

CREATE PROCEDURE "Admin"."RptReklam"(in zad_year date,

                                                                                                      in tip varchar(40))

RESULT(

Mesyac date,

Naimen_model varchar(40),

Count_prod integer,

Count_rekl integer,

Max_proc_rekl integer)

BEGIN

SELECT Mes,

     Name_model,

     Sum(Prodano),

     Sum(Kolvo_rekl),

     MAX(100* Kolvo_rekl/Prodano)

 FROM Book_reklam bk

 JOIN Sprav_model sm on sm.code_model = br.code_model

 WHERE zad_year = year_op and

       tip = type_comp

 GROUP BY mes, name_model

 

END

20 баллов

 

К 21

 

Сумма с условием

sum (case when Kolvo_Shatnix_edinic >2 then Kolvo_Shatnix_edinic else 0 end),

sum (case when type_uch='Промышленность' then Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.016667 else 0 end)

 

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

 

Программный код процедуры:

CREATE PROCEDURE "admin"."prd1"(in diapaz_begin integer, in diapaz_end integer)

result (Depart varchar (50),

   Kol_otr integer,

   Izpas_sr numeric(11,2),

   Sred_Izras numeric(11,2))

BEGIN

SELECT Depart,

  sum(kol_otr), sum(Izras_god), avg(Izras_god)

FROM Sprav_Otdel as sp

JOIN Kniga_Uch as k on sp.Kod_Otdel=k.Kod_Otdel

WHERE sp.kod_otdel between diapaz_begin and diapaz_end

 

 

GROUP BY Depart

END

 

 

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

ЭТОТ ОТВЕТ СЧИТАЕТСЯ ХОРОШИМ (25 из 30)

 

Сформировать отчет за заданный период времени с группировкой по таб.номеру рабочего с выводом общего объема произведенной продукции, начисленной зарплаты и максимального процента брака.

CREATE PROCEDURE "Roman"."KnigaVyr" ((in Data_beg date, in Data_end date)

 

result(

Tab_nomer integer,

Ob_obj numeric (10,2)

Zarplata numeric(10,2),

MaxProc numeric(10,2)

)

BEGIN

SELECT

KV.Tab_nomer, sum(Kol_prya), sum(Kol_prya*Tarif_st), max (Kol_braka/Kol_prya)

FROM KnigaVyr as KV

JOIN SpravRab as SR on KV.Tab_nomer=SR.Tab_nomer

WHERE Dat between Data_beg and Data_end

group by KV.Tab_nomer

order by KV.Tab_nomer

END

 

 

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

Схема БД представлена на рис. 1.

Рис. 1. Схема БД

CREATE PROCEDURE "Artyom"."Stavki" (in Nomer_fil_beg integer,

in Nomer_fil_end integer)

result(

Nomer_filiala integer,

Name_doljnosti varchar (50),

Kolvo_doljnostei varchar (2),

Kolvo_svob_stavok integer,

Zapolnennost numeric (6,2))

 

BEGIN

SELECT Nomer_filiala, Name_doljnosti,

sum(Kolvo_Shatnix_edinic),sum(Kolvo_Shatnix_edinic-Kolvo_zapolnennix_ stavok),

avg(100*Kolvo_zapolnennix_stavok/Kolvo_Shatnix_edinic)

FROM Shtat as b

JOIN Doljnosti as ps on b.Code_doljnosti = ps.Code_doljnosti

WHERE Nomer_filiala between Nomer_fil_beg and Nomer_fil_end

group by Nomer_filiala, Name_doljnosti

order by Nomer_filiala, Name_doljnosti

END

 

Буров.

На модуле данных располагаются 2 компонента TADOQuery и 2 компонента TDataSource (рис. 2).

Рис. 2. Модуль данных

 

Установим для qSDolz свойства: Connection= DB; SQL= SELECT * FROM DOLJNOSTI ORDER BY CODE_DOLJNOSTI; Active=True. Установка последнего свойства произошла без ошибки, значит тестирование НД прошло успешно.

Установим для qBook свойства: Connection= DB; SQL = SELECT * FROM SHTAT ORDER BY Nomer_filiala asc, Podrazdelenie asc.

Отобранные строки упорядочиваются с использованием раздела ORDER BY, в котором указаны колонки, по которым выполняется упорядочивание данных (колонка номер филиала Nomer_filiala, а затем колонка подразделение Podrazdelenie) и способ упорядочивания (asc задает упорядочивание по возрастанию). Установка свойства Active произошло без ошибки, значит тестирование НД прошло успешно.

Убывание – desc.

 

Буров: Отбор данных: Необходимо отобрать записи по заданному диапазону номеров филиалов, количеству штатных единиц и фрагменту названия должности.

procedure TfrmBook.sbFindClick(Sender: TObject);

var where: string; begin

DM.qBook.DisableControls;

DM.qBook.Close;

where:='';

if edN1.text<>'' then

where:='Nomer_filiala>=:n1';

if edN2.text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Nomer_filiala<=:n2';

 end;

 if edD1.Text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Kolvo_shatnix_edinic>=:d1';

 end;

 if edD2.text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Kolvo_shatnix_edinic<=:d2';

 end;

if edDolz.text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Code_doljnosti in (select Code_doljnosti from Doljnosti where Name_doljnosti LIKE:dolz)';

 end;

DM.qBook.SQL.clear;

DM.qBook.SQL.add('SELECT * FROM SHTAT ');

if where<>'' then

DM.qBook.SQL.add('WHERE '+where);

DM.qBook.SQL.add('ORDER BY Nomer_filiala asc, Podrazdelenie asc');

 

if edN1.text<>'' then

DM.qBook.Parameters.ParamByName('n1').Value:=StrToInt(edN1.text);

if edN2.text<>'' then

DM.qBook.Parameters.ParamByName('n2').Value:=StrToInt(edN2.text);

if edD1.text<>'' then

DM.qBook.Parameters.ParamByName('d1').Value:=StrToInt(edD1.text);

if edD2.text<>'' then

DM.qBook.Parameters.ParamByName('d2').Value:=StrToInt(edD2.text);

if edDolz.text<>'' then

 

DM.qBook.Parameters.ParamByName('dolz').Value:='%'+edDolz.Text+'%';

DM.qBook.Open;

DM.qBook.EnableControls;

end;

Васянин: Сформировать отчет с группировкой по подразделениям и сотрудникам (фамилии группы сотрудников начинаются с одной буквы: А, Б, …). По каждой группе вывести общее количество сотрудников, общую сумму начислений и среднее количество отработанных часов. В отчет включать сотрудников, у которых табельный номер находится в заданном диапазоне, а подразделение относится к заданному виду.

CREATE PROCEDURE "admin"."RptTabel"

(in Tab_numb_beg integer,

in Tab_numb_end integer,vpod varchar (50))

result(

Podrazdel varchar (50),

Bukv_fam varchar (1),

Count integer,

Summa numeric(6,2),

Sr_otr_vremya numeric(6,2))

 

BEGIN

SELECT Name_pod, left(FIO,1) as bfa,

count(FIO),sum(money_hour*timeO), avg(timeO)

FROM Tab_work_time as b

JOIN Sprav_pod as sp on b.Kod_pod = sp.Kod_pod

WHERE Tab_numb between Tab_numb_beg and Tab_numb_end

and sp.Tipe_pod= vpod

group by Name_pod, bfa

order by Name_pod, bfa END

Васянин: Отбор данных: Необходимо отобрать записи по заданному диапазону табельных номеров, почасовых ставок и фрагменту ФИО. procedure TfrmBook.sbFindClick(Sender: TObject);

 var where: string;

begin

DM.qBook.DisableControls; DM.qBook.Close;

// строка составного условия

where:='';

// Первый проход - формирование составного условия

if edN1.text<>'' then

where:='Tab_numb>=:n1';

if edN2.text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Tab_numb<=:n2';

 end;

if edD1.Text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'money_hour>=:d1';

 end;

 if edD2.text<>'' then begin if where<>'' then

  where:=where+' and ';

where:=where+'money_hour<=:d2';

 end;

 if edF.text<>'' then begin

if where<>'' then

  where:=where+' and ';

 

where:=where+'FIO LIKE:fio';

 end;

// формирование свойства SQL

DM.qBook.SQL.clear;

DM.qBook.SQL.add('SELECT * FROM TAB_WORK_TIME ');

if where<>'' then

DM.qBook.SQL.add('WHERE '+where);

DM.qBook.SQL.add('ORDER BY Kod_pod asc, FIO asc');

 

// Второй проход - подстановка значений параметров

if edN1.text<>'' then

DM.qBook.Parameters.ParamByName('n1').Value:=StrToInt(edN1.text);

if edN2.text<>'' then

DM.qBook.Parameters.ParamByName('n2').Value:=StrToInt(edN2.text);

if edD1.text<>'' then

DM.qBook.Parameters.ParamByName('d1').Value:=StrToInt(edD1.text);

if edD2.text<>'' then DM.qBook.Parameters.ParamByName('d2').Value:=StrToInt(edD2.text);

if edF.text<> '' then

DM.qBook.Parameters.ParamByName('fio').Value:='%'+edF.Text+'%';

// Открываем НД DM.qBook.Open;

DM.qBook.EnableControls; end;

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

CREATE PROCEDURE "Andrey"."PeriodVr" (in Data_beg date,

in Data_end date,in v_type varchar(30))

result(

Name_uch varchar (50),

Month_rab varchar (7),

Kolichestvo integer,

Otr_vremya numeric(6,2),

Sr_otr_vremya numeric(6,2))

 

BEGIN

SELECT Name_uch, convert (varchar (4), Year(data))+ '-'+convert (varchar (2),Month(data)) as mes,

count(Name_uch),sum(Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.016667),

avg(Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.01666)

FROM Book_ucheta as b

JOIN Sprav_uch as su on b.Kod_uch = su.Kod_uch

WHERE Data between Data_beg and Data_end

and su.type_uch = v_type

group by Name_uch, mes

order by 1,2

END



Поделиться:


Последнее изменение этой страницы: 2020-12-17; просмотров: 61; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.107.241 (0.278 с.)