
-- Вывести имена предприятий с указанием города и наименования выполняемых ими заказов, отсортировав по городу.
-- (Запрос выполнить 2-мя способами, соединяя таблицы во FROM и в WHERE).
SELECT cy.cy_name, cy.cy_city, ce.ce_name
FROM company AS cy INNER JOIN execution AS e ON cy.cy_id = e.cy_id INNER JOIN commande AS ce ON e.ce_id = ce.ce_id
GROUP BY cy.cy_name, cy.cy_city, ce.ce_name
ORDER BY cy.cy_city;
SELECT cy.cy_name, cy.cy_city, ce.ce_name
FROM company AS cy, execution AS e, commande AS ce
WHERE cy.cy_id = e.cy_id AND e.ce_id = ce.ce_id
ORDER BY cy.cy_city;
-- Сколько заказов каждого статуса?
SELECT status, COUNT(ce_id)
FROM reference LEFT OUTER JOIN commande ON reference.re_id = commande.re_id
GROUP BY status;
-- Сколько заказов каждого статуса?
SELECT status, COUNT(ce_id)
FROM reference LEFT OUTER JOIN commande ON reference.re_id = commande.re_id
GROUP BY status;
-- Сколько заказов выполняется в каждом городе?
SELECT cy_city, COUNT(*)
FROM company LEFT JOIN execution ON company.cy_id = execution.cy_id
GROUP BY cy_city;
-- Вывести названия предприятий, для которых не запланировано ни одного заказа
-- (Использовать подзапрос в предложении WHERE)
INSERT INTO Company (cy_id, cy_name, cy_adress, cy_phone)
VALUES ('00A04', 'emty', 'unknown', '0(000)000-00-00');
SELECT company.cy_name
FROM company
WHERE company.cy_id NOT IN (SELECT execution.cy_id FROM execution);
-- Вывести перечень городов, в которых больше одного предприятия (Использовать подзапрос в предложении FROM).
SELECT DISTINCT bb.cy_city
FROM (
SELECT cy_city, COUNT(*)
FROM company
GROUP BY cy_city
HAVING COUNT(*) > 1
) AS bb JOIN company AS aa ON aa.cy_city = bb.cy_city;
-- Сколько выполненных и сколько невыполненных заказов у каждого предприятия? (Использовать подзапросы в предложении SELECT).
SELECT comp.cy_name,
(
SELECT COUNT(*)
FROM company AS c1, execution AS e1
WHERE c1.cy_name = comp.cy_name AND comp.cy_id = e1.cy_id AND e1.e_status = '1'
) AS mi1,
(
SELECT COUNT(*)
FROM company AS c1, execution AS e1
WHERE c1.cy_name = comp.cy_name AND comp.cy_id = e1.cy_id AND e1.e_status = '0'
) AS mi2
FROM company AS comp
GROUP BY comp.cy_name, comp.cy_id
ORDER BY comp.cy_name;