Лабораторная работа 4. Базы данных. Отчет по операциям в 1 квартале 2007 года (название товара, имя поставщика, название склада, тип операции, количество, цена, сумма по операции)
Скачать 14.86 Kb.
|
1.Для каждой страны из справочника COUNTRY, указать количество заказчиков из этой страны и суммарную стоимость заказов, сделанных ими SELECT COUNTRY, COUNT(DISTINCT B.CUST_NO), SUM(TOTAL_VALUE) FROM COUNTRY A LEFT JOIN CUSTOMER B USING(COUNTRY) LEFT JOIN SALES USING(CUST_NO) GROUP BY COUNTRY; 2. Для каждого отдела выдать руководителя отдела и количество сотрудников в отделе. SELECT DEPARTMENT, B.FULL_NAME, COUNT(C.FULL_NAME) FROM DEPARTMENT A LEFT JOIN EMPLOYEE B ON A.MNGR_NO = B.EMP_NO LEFT JOIN EMPLOYEE C ON A.DEPT_NO=C.DEPT_NO GROUP BY A.DEPARTMENT, B.FULL_NAME; 3. Для каждой вакансии (должность, страна, квалификация) выдать количество сотрудников, работающих на данной должности, и их средний оклад. SELECT DISTINCT A.JOB_TITLE, A.JOB_GRADE, A.job_country, COUNT(DISTINCT B.FULL_NAME), AVG(B.SALARY) FROM JOB A LEFT JOIN EMPLOYEE B USING(JOB_CODE, JOB_GRADE, JOB_COUNTRY) GROUP BY A.JOB_TITLE, A.job_grade, A.JOB_COUNTRY; 4. Выдать общий список сотрудников и заказчиков, указав для каждого из них страну, где они находятся. SELECT FULL_NAME, JOB_COUNTRY FROM EMPLOYEE UNION SELECT CUSTOMER, COUNTRY FROM CUSTOMER; Файл базы – wh_new.fdb 5. Составить список товаров, которые есть на складе «Склад 2», указать их количество и единицы измерения. SELECT A.ID_GOODS, B.QUANTITY, A. MEASURE FROM GOODS A LEFT JOIN GOODS_WH B USING(ID_GOODS) JOIN WAREHOUSE C USING(ID_WH) WHERE C.NAME = 'Склад 2'; 6.Составить список всех городов, задействованных в базе данных «Учет на складе». SELECT TOWN FROM warehouse UNION SELECT TOWN FROM AGENT; 7. Составить отчет по операциям в 1 квартале 2007 года (название товара, имя поставщика, название склада, тип операции, количество, цена, сумма по операции). SELECT D.NOMENCLATURE, B.NAME_AG, C.NAME, A.TYPEOP, A.QUANTITY, A.PRICE, A.QUANTITY*A.PRICE, A.OP_DATE FROM OPERATION A LEFT JOIN AGENT B USING(ID_AG) JOIN WAREHOUSE C USING(ID_WH) JOIN GOODS D USING(ID_GOODS) WHERE A.OP_DATE BETWEEN '01.01.2007' AND '01.04.2007'; 8. Выдать информацию об операциях с товаром «Тетрадь 12л». Должны быть указаны: дата операции, тип словами (А – «привозили», R – «увозили»), название склада, название агента, стоимость (цена*количество). SELECT A.OP_DATE, CASE WHEN A.TYPEOP = 'A' THEN 'Привозили' WHEN A.TYPEOP = 'R' THEN 'Увозили' ELSE Null END as TYPEOP, C.NAME, B.NAME_AG, A.QUANTITY*A.PRICE FROM OPERATION A LEFT JOIN AGENT B USING(ID_AG) JOIN WAREHOUSE C USING(ID_WH) JOIN GOODS D USING(ID_GOODS) WHERE D.NOMENCLATURE = 'Тетрадь 12л.'; 9. Найти количество разных товаров, с которыми работал каждый поставщик. SELECT NAME_AG, COUNT(DISTINCT ID_GOODS) FROM AGENT LEFT JOIN OPERATION USING(ID_AG) GROUP BY NAME_AG; 10. Найти минимальную стоимость операции для каждого поставщика. SELECT NAME_AG, MIN(QUANTITY*PRICE) FROM AGENT LEFT JOIN OPERATION USING(ID_AG) GROUP BY NAME_AG; 11. Для каждого склада определить суммарное количество хранящихся на нем товаров. SELECT NAME, SUM(QUANTITY) FROM GOODS_WH JOIN WAREHOUSE USING(ID_WH) GROUP BY NAME; |