Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Ужгороддержкордон 2 1400 3 ОстрогожськГадяч 2 1000 4 ЄлецькОрел

Работа добавлена на сайт samzan.net:


PAGE  3

        13 Вкладені алгоритми

    Задача 4. Виготовити звіт про сумарний об’єм транспортованого газу за поточний рік по кожному підприємству для заданого газопровода. До заголовка звіту додати назву газопроводу, слова “станом на” і встановити поточну дату.

        Таблиця gazpr (газопроводи):

1   Україна                                         1   1400

2   Ямпіль-Ужгород-держкордон     2   1400

3   Острогожськ-Гадяч                     2   1000

4   Єлецьк-Орел                               7   1200

5   Єлецьк-Десна-Кривий Ріг           5   1600

        Таблиця pidpr (підприємства):

1  Харківтрансгаз              Харків        

2  Прикарпаттрансгаз       Івано-Франківськ         

3  Київтрансгаз                  Київ                    

4  Львівтрансгаз                Львів          

5  Експорттрансгаз           Ужгород    

        Таблиця оblik (облік):

2    2    2005-04-12    2

2    2    2012-04-12    2

2    5    2012-02-11    1

3    5    2012-09-10    3

2    5    2012-07-01    4

        Zvit_cykl без курсора:

CREATE OR REPLACE FUNCTION zvit_cykl(integer)

RETURNS text AS

$$

DECLARE

zapysp pidpr %ROWTYPE; zapyso oblik %ROWTYPE; zapysg gazpr %ROWTYPE;

name_g gazpr.naz_g %TYPE; kod ALIAS FOR $1;

den INTEGER; mis INTEGER; rik INTEGER; ms CHARACTER(9) ARRAY[12];

slovo TEXT; s REAL; b BOOL;

BEGIN

den:=EXTRACT(DAY FROM CURRENT_DATE);

mis:=EXTRACT(MONTH FROM CURRENT_DATE);

rik:=EXTRACT(YEAR FROM CURRENT_DATE);

ms[1]:='січня'; ms[2]:='лютого'; ms[3]:='березня'; ms[4]:='квітня';

ms[5]:='травня'; ms[6]:='червня'; ms[7]:='липня'; ms[8]:='серпня';

ms[9]:='вересня'; ms[10]:='жовтня'; ms[11]:='листопада'; ms[12]:='грудня';

SELECT INTO name_g naz_g FROM gazpr WHERE kod_g = kod;

slovo:='                                         Звіт'||E'\n';

slovo:=slovo ||'про кількість транспортованого газу по газопроводу '||name_g||E'\n';

slovo:=slovo ||'станом на '||TO_CHAR(den,'99')||' '||ms[mis]||' '|| TO_CHAR(rik, '9999')||E'\n\n';

slovo:=slovo ||'Підприємство                  Кількість'||E'\n';

slovo:=slovo ||'-----------------------------------------------'||E'\n';

FOR zapysp IN SELECT * FROM pidpr ORDER BY naz_p LOOP

s:=0;

FOR zapyso IN SELECT * FROM oblik LOOP

b:=zapyso.kod_g=kod;

b:=b AND zapyso.kod_p=zapysp.kod_p;

b:=b AND rik=EXTRACT(YEAR FROM zapyso.data);

IF b THEN s:=s+zapyso.kilk; END IF;

END LOOP;

IF s>0 THEN slovo:=slovo||zapysp.naz_p||'           '||TO_CHAR(s, '99.9')||E'\n';

END IF;

END LOOP;

RETURN slovo;

END;

$$

LANGUAGE plpgsql;

select zvit_cykl(2);

                                                      Звіт

про кількість транспортованого газу по газопроводу Ямпіль-Ужгород-держкордон

станом на  17 листопада  2012 року

Підприємство                  Кількість

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

Експорттрансгаз             5.0

Прикарпаттрансгаз         2.0

    Задача 6. Виготовити звіт про розподіл кількості транспортованого газу на кожному газопроводі по підприємствах у поточному році. Навпроти назв газопроводів установити значення кількості для кожного підприємства. Передбачити підсумки по вертикалі і по горизонталі.

1  Україна                                     8 1400

3  Уренгой-Помари-Ужгород    6 1800

4  Гадяч-Париж                           7 1500

5  Гадяч-держкордон                  2   800

2  Єлецьк-Орел                            8    123

1  Київтрансгаз             Київ       

2  Гадячгазпром            Полтава    

3  Львівгазпром            Львів         

4  Прикарпаттрансгаз   Галич         

1  2  3  2010-06-12

2  2  5  2011-06-12

3  2  3  2012-07-31

4  2  5  2011-09-21

2  3  4  2012-06-13

9  4  2  2009-10-25

3  3  5  2012-12-16

2  2  2  2012-11-15

        Звіт про розподіл:

CREATE OR REPLACE FUNCTION vklc_rozpod() RETURNS text AS

$$

DECLARE

zapysp pidpr %ROWTYPE; zapyso oblik %ROWTYPE; zapysg gazpr %ROWTYPE;

slovo TEXT; s oblik.kilk %TYPE; suma oblik.kilk %TYPE; b BOOL:=FALSE;

sss oblik.kilk %TYPE:=0; ss INTEGER ARRAY[5]; i integer;

BEGIN

slovo:=repeat(' ', 40)||'Звіт'||E'\n';

slovo:=slovo ||repeat(' ', 15)||'про розподіл кількості транспортованого газу по підприємствах' ||E'\n'||E'\n';

slovo:=slovo ||'Підприємство:          ';

FOR zapysp IN SELECT * FROM pidpr LOOP

slovo:=slovo ||rpad(zapysp.naz_p,15);

END LOOP;

slovo:=slovo ||'   Сума   '||E'\n';

ss[1]:=0; ss[2]:=0; ss[3]:=0; ss[4]:=0; ss[5]:=0;

FOR zapysg IN SELECT * FROM gazpr LOOP

slovo:=slovo || rpad(zapysg.naz_g, 20) ||' '; suma:=0; i:=1;

FOR zapysp IN SELECT * FROM pidpr LOOP

s:=0;

FOR zapyso IN SELECT * FROM oblik LOOP

b:=zapyso.kod_g=zapysg.kod_g AND zapyso.kod_p=zapysp.kod_p;

IF b THEN s:=s+zapyso.kilk;END IF;

END LOOP; suma:=suma+s; ss[i]:=ss[i]+s; i:=i+1;

slovo:=slovo||TO_CHAR(s,'999999999999')||'  ';

END LOOP; i:=1;

slovo:=slovo||TO_CHAR(suma,'9999999')||E'\n';

ss[5]:=ss[5]+suma;

END LOOP;

slovo:=slovo ||repeat(' ', 14)||'Всього'||TO_CHAR(ss[1],'9999999999999')||  

                                                            TO_CHAR(ss[2],'99999999999999');

slovo:=slovo ||TO_CHAR(ss[3],'99999999999999')||TO_CHAR(ss[4],'99999999999999');

slovo:=slovo ||TO_CHAR(ss[5],'999999999')||E'\n';

RETURN slovo;

END;

$$

 LANGUAGE plpgsql;

SELECT vklc_rozpod();

                                                                   Звіт

                       про розподіл кількості транспортованого газу по підприємствах

Підприємство:                Київтрансгаз   Гадячгазпром   Львівгазпром   Прикарпаттрансг   Сума   

Україна                                      0                        3                         0                               0                 3

Уренгой-Помари-Ужгор          0                        3                         5                               0                 8

Гадяч-Париж                             0                        5                         0                               0                 5

Гадяч-держкордон                    0                        0                         0                               0                 0

Єлецьк-Орел                             0                         7                         4                               0               11

                             Всього          0                      18                          9                               0               27

 




1. .1.Основные понятия
2. Чтоесли К средствам анализа чтоесли относят- Подбор параметра Таблицы данных Диспетче
3. ЛЕКЦИЯ 7.РЫНКИ ФАКТОРОВ ПРОИЗВОДСТВА Для производства товаров фирме необходимо приобрести факторы произво
4. демократическая идеология Социалдемократическая идеология пытается соединить представления об обще
5. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата історичних наук Київ1999 Дисерта
6. РЕФЕРАТ Виды и формы обучения работу выполнил аспирант 2 года обучения Мельник А
7. Лекция 1.Протокол HTTP В середине 90х годов очень популярной стала WWW World Wide Web Всемирная паутина
8. Блокировка 2. Перегрузка 3
9. Предмет, задачи и методы физиологии растений
10. ассистент той же кафедры
11. РЕФЕРАТ дисертації на здобуття вченого ступеня кандидата технічних наук
12. Микроскопия
13. тема криминалистики
14. на тему- Рынки факторов производства План лекции- 1
15. геологічними вишукуваннями майданчик будівництва складен чорнозем потужністю 0304 м; супесь із чор
16. Танки времен Великой Отечественной войны
17. Статья- Перспективы рекреационного освоения Российского Севера
18. Электростанции России
19. Rise of the Boogeymen ~ это классический аркадный 2D файтинг с геймплеем и графикой в стиле Mortl Kombt
20. Лабораторная работа 3 Исследование влияния эксплуатационных факторов и параметров состояния внешней сред