Создание базы данных “Коммивояжер”, страница 4

Рис. 17. Кто заработал за последний месяц сумму, указанную на экране?

                    

Рис. 17. Самые высокооплачиваемы агенты за последний месяц (обратите внимание, что здесь указана агент «Тузикова», имеющая доходы за последний месяц, причём сумма дохода соответствует предыдущему запросу)

Код:

Select agent.фамилия as "fam",agent.имя as "nam",;

agent.отчество as "och",sum(goods.стоимость) as "Kol";

from   dataagent!agent, dataagent!goods;

where agent.id = goods.id_агента;

AND  month(goods.дата_продажи)=month(date())-1;

     AND  year(goods.дата_продажи)=year(date());

group by agent.фамилия;

order by Kol DESC;

into cursor cur1

select cur1.fam, cur1.nam, cur1.och, cur1.kol;

from   cur1;

where cur1.kol > thisform.pageframe1.page4.text1.value

5. Найти - за какие месяцы заработки торгового агента (выбор агента) превысили 600 р. (ввод суммы, любой).

Рис. 18. Исходные данные для запроса

              

Рис. 19. Месяцы (и года), за которые мои доходы превышают 2700 рублей.

Обратите внимание, что если проанализировать рис. 5 (сводную таблицу товаров), можно заметить, «я» зарабатывал ещё и 2645 рублей в месяц, но эта сумма и месяц в таблице не указаны, как не удовлетворяющие условию.

Код:

Select month(goods.дата_продажи)as "месяц", year(goods.дата_продажи)as "Год",sum(goods.стоимость) as;

"Зарплата", agent.фамилия as "Фамилия",agent.имя as "Имя", agent.отчество as "Отчество";

from   dataagent!agent, dataagent!goods;

where agent.id = goods.id_агента;

AND agent.фамилия = thisform.pageframe1.page5.combo1.value;

group by месяц, год;

order by Зарплата DESC;

into cursor cur1

select  cur1.фамилия, cur1.имя,cur1.Отчество,cur1.месяц,cur1.год, cur1.зарплата;

from   cur1;

where cur1.зарплата > thisform.pageframe1.page5.Text1.value

6. Для каждого торгового агента определить месяц, когда их заработок превышал 700 р. (ввод суммы, любой)

Рис. 20. По сути запрос 5, но для всех агентов.

Рис. 21. Теперь агентов в таблице – результате запроса много.

Код:

Select month(goods.дата_продажи)as "месяц", sum(goods.стоимость) as;

"Зарплата", agent.фамилия as "Фамилия",agent.имя as "Имя",agent.отчество as "Отчество";

from   dataagent!agent, dataagent!goods;

where agent.id = goods.id_агента;

group by месяц, фамилия;

order by Зарплата DESC;

into cursor cur1

select  cur1.фамилия, cur1.имя,cur1.Отчество,cur1.месяц, cur1.зарплата;

from   cur1;

where cur1.зарплата > thisform.pageframe1.page6.Text1.value;

order by фамилия

7. Найти долю дешевых товаров (меньше заданного, ввод с клавиатуры) от общего числа товаров.

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

Код:

select count(goods.стоимость) as stoim;

from goods;

where goods.стоимость < (thisform.pageframe1.page7.Text1.value);

into cursor qq

select count(goods.наименование) as stoim;

from goods;

into cursor qqq

thisform.pageframe1.page7.Text2.value = (qq.stoim/qqq.stoim)*100

Рис. 22. Доля отображается непосредственно на форме.

8.  Найти всех агентов заданного года рождения (ввод даты).

Рис. 23. Вот такой маленький процент товаров, цена которых лежит в промежутке от 500 до 750 рублей.

Код:

close all

use goods.dbf

calculate sum(goods.кол_во_продаж) to s1

calculate sum(goods.кол_во_продаж) for between;

(goods.стоимость,thisform.pageframe1.page8.Text1.value,thisform.pageframe1.page8.Text2.value) to s2

clear

thisform.pageframe1.page8.Text3.value=ROUND((s2/s1)*100,2)

9. Найти долю товаров, чья стоимость находится в заданных пределах (ввод интервала) от общего количества товаров.

Рис.  24 Запрос по дате рождения.

Рис. 25. Уроженцы 1982 года рождения.

Код:

SELECT  agent.фамилия, agent.имя, agent.отчество, agent.год;

FROM  agent;

where agent.год = thisform.pageframe1.page9.Text1.value

10.  Найти все товары с заданной датой выпуска (ввод даты)

Рис. 26. Ввод даты для запроса