Создание базы данных «Фотоаппараты», страница 5

8.  «доля фото, проданных за период»

select count(date_sell) as mm;

from db!tb_foto ;

where date_sell in ( ;

      select tb_foto.date_sell as дата_продажи ;

      from db!tb_foto ;

      where  tb_foto.date_sell >= Thisform.text1.value ;

            and tb_foto.date_sell <= Thisform.text2.value ;

      );

into cursor num

select count(*) as nn ;

from db!tb_foto ;

into cursor num_total

thisform.label1.caption=trim(str(100*(num.mm/num_total.nn))+"%")

Рис. 7.8. Форма запроса «доля фото, проданных за определённый период»

9.  «самый популярный»

select ;

      tb_model.model as модель,;

      count(tb_foto.model_id) as количество ;

from db!tb_foto, db!tb_model ;

where ;

      tb_foto.model_id = tb_model.dnm_id ;

      and tb_foto.model_id=tb_model.dnm_id ;

group by tb_model.model ;

into cursor tt

select tt.модель as популярная_модель, ;

      tt.количество;

from tt;

where tt.количество = (select max(tt.количество);

from tt)

Рис. 7.9. Результат запроса «самый популярный»

10.  «заданы поставщик, цена и страна»

select avg(tb_foto.cost) as avr;

from db!tb_foto, db!tb_model, db!tb_country, db!tb_prod;

where ;

            tb_foto.model_id=tb_model.dnm_id ;

            and tb_model.producer_id = tb_prod.dnm_id ;

            and tb_prod.country_id = tb_country.dnm_id ;

            and tb_country.name_country = Thisform.list3.value ;

            and tb_model.model = Thisform.list1.value ;

group by tb_model.model ;

into cursor aver

messagebox(str(aver.avr),"средняя стоимость фотоаппарата из страны")

      select ;

            tb_prod.name_prod as производитель, ;

            tb_model.model as модель,;

            tb_foto.cost as цена, ;

            tb_distrib.name_co as поставщик ;

      from db!tb_foto, db!tb_model, db!tb_prod, db!tb_distrib;

      where  ;

            tb_foto.model_id = tb_model.dnm_id ;

            and tb_model.producer_id = tb_prod.dnm_id ;

            and tb_foto.distrib_id = tb_distrib.dnm_id ;

            and tb_distrib.name_co = Thisform.List2.value ;

            and tb_foto.cost >= aver.avr ;

Рис. 7.10. Форма запроса «заданы поставщик, цена и страна»

Рис. 7.10.1. Средняя стоимость фотоаппарата из страны

Рис. 7.10.2. Результат запроса «заданы поставщик, цена и страна»

11.  «доля дешёвых, из страны и вообще»

select count(*) as v ;

from db!tb_foto ;

into cursor num_total

select count(cost) as v;

from db!tb_foto ;

where cost in ( ;

      select tb_foto.cost as цена ;

      from db!tb_foto, db!tb_model, db!tb_country, db!tb_prod, db!tb_distrib;

      where tb_foto.cost <= int(Thisform.text1.value) ;

      and tb_foto.distrib_id = tb_distrib.dnm_id ;

      and tb_foto.model_id = tb_model.dnm_id ;

      and tb_model.producer_id = tb_prod.dnm_id ;

      and tb_prod.country_id = tb_country.dnm_id ;

      and tb_distrib.name_co = thisform.list2.value ;

      and tb_country.name_country = Thisform.list3.value ;

      );

into cursor aver1

messagebox(str(aver1.v),"число среди выбранных")

select count(cost) as v;

from db!tb_foto ;

where cost in ( ;

      select tb_foto.cost as цена ;

      from db!tb_foto ;

      where tb_foto.cost <= int(Thisform.text1.value) ;

      );

into cursor aver2

messagebox(str(aver2.v),"число среди вообще")

messagebox("среди выбранных: "+str(100*aver1.v/num_total.v)+"%"+chr(13)+"вообще: "+str(100*aver2.v/num_total.v)+"%")

Рис. 7.11. Форма запроса «доля дешёвых, из страны или вообще»

Рис. 7.11.1. Число среди выбранных

Рис. 7.11.2. Число среди вообще

Рис. 7.11.3. Результат запроса «доля дешёвых, из страны или вообще»

12.  «количество бракованных»

      select tb_foto.break ;

      from db!tb_foto, db!tb_model, db!tb_country, db!tb_prod, db!tb_distrib;

      where tb_foto.date_sell >= Thisform.text1.value ;

      and tb_foto.date_sell <= Thisform.text2.value ;

      and tb_foto.distrib_id = tb_distrib.dnm_id ;

      and tb_foto.model_id = tb_model.dnm_id ;

      and tb_model.producer_id = tb_prod.dnm_id ;

      and tb_prod.country_id = tb_country.dnm_id ;