āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻāĻāĻ¤ āĻĻā§āĻ°ā§āĻāĻĻāĻŋāĻ¨ āĻ§āĻ°ā§ āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻžāĻ˛ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĻāĻāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻ¯āĻž SQL āĻāĻžāĻˇāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻāĻ¤ āĻŦā§āĻļāĻŋ āĻ¯ā§ āĻāĻĻā§āĻ¯āĻŧāĻŽāĻžāĻ¨ āĻāĻžāĻ¤āĻā§āĻ˛āĻŋāĻā§ NoSQL āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ¤āĻžāĻ°āĻž āĻāĻ āĻŦāĻžāĻāĻžāĻ°ā§ āĻ¨āĻŋāĻā§āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻžāĻ¯āĻŧāĻāĻž āĻāĻŋāĻ¤āĻ¤ā§ āĻĒā§āĻ°ā§āĻā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻžāĻ˛ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāĻ¸ āĻŽāĻžāĻ°āĻž āĻ¯āĻžāĻā§āĻā§ āĻ¨āĻž, āĻāĻŦāĻ āĻ¤āĻžāĻĻā§āĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻāĻžāĻ˛āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻā§āĻā§āĨ¤
āĻāĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§, āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻ§āĻžāĻ°āĻŖāĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻāĻžāĻāĨ¤ āĻāĻ°āĻ āĻāĻžāĻ˛ āĻŦā§āĻāĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻŋ āĻā§āĻ˛āĻžāĻ¸āĻŋāĻā§āĻ¯āĻžāĻ˛ āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻžāĻ˛ āĻŽāĻĄā§āĻ˛ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¤ā§āĻ˛āĻ¨āĻž āĻāĻ°ā§ āĻāĻāĻŋ āĻāĻ°āĻŦāĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻāĻ¨ā§āĻāĻžāĻ°āĻ¨ā§āĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ SQL āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻā§āĻŽāĻŋāĻāĻž
āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻžāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸āĻā§āĻ˛āĻŋ āĻā§āĻŦāĻŋāĻ˛ āĻāĻŦāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§, āĻ¯āĻĨāĻžāĻā§āĻ°āĻŽā§ āĻā§āĻ˛āĻžāĻ¸ āĻāĻŦāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ N āĻā§ āĻ¸āĻš āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻˇā§āĻ¤ā§āĻ° N āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ˛āĻŋāĻā§āĻāĻā§āĻ˛āĻŋāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§, āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§ āĻ¯āĻž āĻ˛āĻŋāĻā§āĻāĻāĻŋ āĻ¯ā§ āĻā§āĻ˛āĻžāĻ¸ā§ āĻ¯āĻžāĻ¯āĻŧ āĻ¤āĻžāĻ° āĻŦāĻ¸ā§āĻ¤ā§āĻā§āĻ˛āĻŋāĻā§ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻ¯āĻŧāĨ¤ JOIN āĻāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻŽā§āĻĒā§āĻāĻŋāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻāĻžāĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻāĻ¯āĻŧāĻžāĻ° āĻāĻā§, āĻāĻŽāĻŋ āĻĄā§āĻŽā§āĻ¨ āĻ˛āĻāĻŋāĻā§āĻ° āĻāĻžāĻāĻāĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻāĻ°āĻŦāĨ¤ DDL āĻāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻŋ PostgreSQL āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦāĨ¤ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯āĨ¤
āĻā§āĻŦāĻŋāĻ˛ āĻāĻŦāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°
āĻ¨āĻžāĻŽ āĻāĻŦāĻ āĻŽā§āĻ˛ā§āĻ¯ āĻā§āĻˇā§āĻ¤ā§āĻ° āĻ¸āĻš āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ Sku āĻ āĻŦāĻā§āĻā§āĻ:
āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ¯āĻŧ
CREATE TABLE Sku
(
id bigint NOT NULL,
name character varying(100),
price numeric(10,5),
CONSTRAINT id_pkey PRIMARY KEY (id)
)
āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§
CLASS Sku;
name = DATA STRING[100] (Sku);
price = DATA NUMERIC[10,5] (Sku);
āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻŋ āĻā§āĻˇāĻŖāĻž āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ˛āĻžāĻĒ, āĻ¯āĻž āĻāĻ¨āĻĒā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻāĻāĻŋ Sku āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ¨ā§āĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻĻāĻŋāĻŽ āĻĒā§āĻ°āĻāĻžāĻ° āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻāĻāĻž āĻ§āĻ°ā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ āĻ¯ā§ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ DBMS-āĻ, āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻāĻŋāĻā§ āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻā§āĻĄ āĻĨāĻžāĻāĻŦā§ āĻ¯āĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¤ā§āĻ°āĻŋ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻ¸ā§āĻ¨ āĻĒāĻŖā§āĻ¯ / āĻĻā§āĻāĻžāĻ¨ / āĻ¸āĻ°āĻŦāĻ°āĻžāĻšāĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŽā§āĻ˛ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻŋāĨ¤ āĻāĻāĻŋ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¤āĻžāĻ āĻā§āĻŦāĻŋāĻ˛ā§ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻˇā§āĻ¤ā§āĻ° āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻāĨ¤ āĻā§āĻĄ āĻ¸āĻāĻā§āĻˇāĻŋāĻĒā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻžāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻŦāĻŋāĻ˛ā§āĻ° āĻā§āĻˇāĻŖāĻž āĻāĻĄāĻŧāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻŦ:
āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ¯āĻŧ
CREATE TABLE prices
(
skuId bigint NOT NULL,
storeId bigint NOT NULL,
supplierId bigint NOT NULL,
dateTime timestamp without time zone,
price numeric(10,5),
CONSTRAINT prices_pkey PRIMARY KEY (skuId, storeId, supplierId)
)
āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§
CLASS Sku;
CLASS Store;
CLASS Supplier;
dateTime = DATA DATETIME (Sku, Store, Supplier);
price = DATA NUMERIC[10,5] (Sku, Store, Supplier);
āĻ¸ā§āĻāĻā§āĻ°
āĻļā§āĻˇ āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ¸ā§āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻŋāĻā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻāĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ āĻ¯āĻžāĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĻā§āĻ°ā§āĻ¤ āĻŽā§āĻ˛ā§āĻ¯ āĻā§āĻāĻā§ āĻĒā§āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤
āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ¯āĻŧ
CREATE INDEX prices_date
ON prices
(skuId, storeId, supplierId, dateTime)
āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§
INDEX Sku sk, Store st, Supplier sp, dateTime(sk, st, sp);
āĻāĻ°ā§āĻŽ
āĻāĻ° āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻĨā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§āĻ˛āĻāĻāĻžāĻŦā§ āĻ¸āĻšāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻ¯āĻžāĻ
āĻĒā§āĻ°āĻĨāĻŽā§, āĻāĻ¸ā§āĻ¨ āĻĄā§āĻŽā§āĻ¨ āĻ˛āĻāĻŋāĻ āĻā§āĻˇāĻŖāĻž āĻāĻ°āĻŋ (āĻāĻāĻāĻŋ āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻžāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻāĻŋ āĻāĻĒāĻ°ā§āĻ° āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§)āĨ¤
CLASS Department;
name = DATA STRING[100] (Department);
CLASS Employee;
department = DATA Department (Employee);
chief = DATA Employee (Employee);
name = DATA STRING[100] (Employee);
salary = DATA NUMERIC[14,2] (Employee);
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ
āĻ¤āĻžā§āĻā§āĻˇāĻŖāĻŋāĻ āĻ¸ā§āĻĒāĻžāĻ°āĻāĻžāĻāĻāĻžāĻ°āĻĻā§āĻ° āĻā§āĻ¯āĻŧā§ āĻŦā§āĻļāĻŋ āĻŽāĻā§āĻ°āĻŋ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻāĻ°ā§āĻŽāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°ā§āĻ¨āĨ¤
āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ¯āĻŧ
select a.*
from employee a, employee b
where b.id = a.chief_id
and a.salary > b.salary
āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§
SELECT name(Employee a) WHERE salary(a) > salary(chief(a));
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ
āĻ¤āĻžāĻĻā§āĻ° āĻŦāĻŋāĻāĻžāĻā§ āĻ¸āĻ°ā§āĻŦā§āĻā§āĻ āĻŦā§āĻ¤āĻ¨ āĻāĻĒāĻžāĻ°ā§āĻāĻ¨āĻāĻžāĻ°ā§ āĻāĻ°ā§āĻŽāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°ā§āĻ¨
āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ¯āĻŧ
select a.*
from employee a
where a.salary = ( select max(salary) from employee b
where b.department_id = a.department_id )
āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§
maxSalary 'ĐĐ°ĐēŅиĐŧĐ°ĐģŅĐŊĐ°Ņ СаŅĐŋĐģĐ°ŅĐ°' (Department s) =
GROUP MAX salary(Employee e) IF department(e) = s;
SELECT name(Employee a) WHERE salary(a) = maxSalary(department(a));
// иĐģи ĐĩŅĐģи "СаиĐŊĐģĐ°ĐšĐŊиŅŅ"
SELECT name(Employee a) WHERE
salary(a) = maxSalary(GROUP MAX salary(Employee e) IF department(e) = department(a));
āĻāĻāĻ¯āĻŧ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¸āĻŽāĻžāĻ¨āĨ¤ āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻžāĻ˛ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻĒāĻ¨āĻŋ CREATE VIEW āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨, āĻ¯āĻž āĻāĻāĻāĻāĻžāĻŦā§ āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻāĻŋāĻ¤ā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŦāĻŋāĻāĻžāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻŦā§āĻ¤āĻ¨ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻŦā§āĨ¤ āĻāĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§, āĻ¸ā§āĻĒāĻˇā§āĻāĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻŋ āĻĒā§āĻ°āĻĨāĻŽ āĻā§āĻ¸āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻŋ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻāĻŋāĻā§ āĻāĻ°āĻ āĻāĻžāĻ˛āĻāĻžāĻŦā§ āĻĒā§āĻ°āĻ¤āĻŋāĻĢāĻ˛āĻŋāĻ¤ āĻāĻ°ā§āĨ¤
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ
āĻŦāĻŋāĻāĻžāĻā§āĻ° āĻāĻāĻĄāĻŋāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°ā§āĻ¨, āĻāĻ°ā§āĻŽāĻāĻžāĻ°ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻž 3 āĻāĻ¨ā§āĻ° āĻŦā§āĻļāĻŋ āĻ¨āĻ¯āĻŧāĨ¤
āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ¯āĻŧ
select department_id
from employee
group by department_id
having count(*) <= 3
āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§
countEmployees 'ĐĐžĐģиŅĐĩŅŅвО ŅĐžŅŅŅĐ´ĐŊиĐēОв' (Department d) =
GROUP SUM 1 IF department(Employee e) = d;
SELECT Department d WHERE countEmployees(d) <= 3;
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ
āĻāĻ°ā§āĻŽāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻāĻ°ā§āĻ¨ āĻ¯āĻžāĻĻā§āĻ° āĻāĻāĻ āĻŦāĻŋāĻāĻžāĻā§ āĻāĻ°ā§āĻŽāĻ°āĻ¤ āĻāĻāĻāĻ¨ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻā§āĻ¤ āĻŦā§āĻ¯āĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ āĻ¨ā§āĻāĨ¤
āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ¯āĻŧ
select a.*
from employee a
left join employee b on (b.id = a.chief_id and b.department_id = a.department_id)
where b.id is null
āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§
SELECT name(Employee a) WHERE NOT (department(chief(a)) = department(a));
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ
āĻ¸āĻ°ā§āĻŦā§āĻā§āĻ āĻŽā§āĻ āĻāĻ°ā§āĻŽāĻāĻžāĻ°ā§ āĻŦā§āĻ¤āĻ¨ āĻ¸āĻš āĻŦāĻŋāĻāĻžāĻā§āĻ° āĻāĻāĻĄāĻŋāĻā§āĻ˛āĻŋāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻā§āĻāĻā§āĻ¨āĨ¤
āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ¯āĻŧ
with sum_salary as
( select department_id, sum(salary) salary
from employee
group by department_id )
select department_id
from sum_salary a
where a.salary = ( select max(salary) from sum_salary )
āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§
salarySum 'ĐĐ°ĐēŅиĐŧĐ°ĐģŅĐŊĐ°Ņ СаŅĐŋĐģĐ°ŅĐ°' (Department d) =
GROUP SUM salary(Employee e) IF department(e) = d;
maxSalarySum 'ĐĐ°ĐēŅиĐŧĐ°ĐģŅĐŊĐ°Ņ СаŅĐŋĐģĐ°ŅĐ° ĐžŅĐ´ĐĩĐģОв' () =
GROUP MAX salarySum(Department d);
SELECT Department d WHERE salarySum(d) = maxSalarySum();
āĻāĻ¸ā§āĻ¨ āĻ
āĻ¨ā§āĻ¯ āĻĨā§āĻā§ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻāĻžāĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ
āĻā§āĻ¨ āĻŦāĻŋāĻā§āĻ°ā§āĻ¤āĻžāĻ°āĻž 1997 āĻ¸āĻžāĻ˛ā§ 30āĻāĻŋāĻ° āĻŦā§āĻļāĻŋ āĻāĻāĻā§āĻŽ #1 āĻŦāĻŋāĻā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋāĻ˛?
āĻĄā§āĻŽā§āĻ¨ āĻ˛āĻāĻŋāĻ (āĻāĻā§āĻ° āĻŽāĻ¤ā§, āĻāĻŽāĻ°āĻž RDBMS-āĻ āĻā§āĻˇāĻŖāĻžāĻāĻŋ āĻāĻĄāĻŧāĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻ):
CLASS Employee 'ĐŅОдавĐĩŅ';
lastName 'ФаĐŧиĐģиŅ' = DATA STRING[100] (Employee);
CLASS Product 'ĐŅОдŅĐēŅ';
id = DATA INTEGER (Product);
name = DATA STRING[100] (Product);
CLASS Order 'ĐĐ°ĐēаС';
date = DATA DATE (Order);
employee = DATA Employee (Order);
CLASS Detail 'ĐĄŅŅĐžĐēĐ° СаĐēаСа';
order = DATA Order (Detail);
product = DATA Product (Detail);
quantity = DATA NUMERIC[10,5] (Detail);
āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ¯āĻŧ
select LastName
from Employees as e
where (
select sum(od.Quantity)
from [Order Details] as od
where od.ProductID = 1 and od.OrderID in (
select o.OrderID
from Orders as o
where year(o.OrderDate) = 1997 and e.EmployeeID = o.EmployeeID)
) > 30
āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§
sold (Employee e, INTEGER productId, INTEGER year) =
GROUP SUM quantity(OrderDetail d) IF
employee(order(d)) = e AND
id(product(d)) = productId AND
extractYear(date(order(d))) = year;
SELECT lastName(Employee e) WHERE sold(e, 1, 1997) > 30;
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ
āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻžāĻšāĻā§āĻ° āĻāĻ¨ā§āĻ¯ (āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻžāĻŽ, āĻļā§āĻˇ āĻ¨āĻžāĻŽ), āĻĻā§āĻāĻŋ āĻāĻāĻā§āĻŽ (āĻ¨āĻžāĻŽ) āĻā§āĻāĻā§āĻ¨ āĻ¯āĻžāĻ° āĻāĻĒāĻ° āĻā§āĻ°āĻžāĻšāĻ 1997 āĻ¸āĻžāĻ˛ā§ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻŦā§āĻļāĻŋ āĻ āĻ°ā§āĻĨ āĻŦā§āĻ¯āĻ¯āĻŧ āĻāĻ°ā§āĻā§āĻ¨āĨ¤
āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĨā§āĻā§ āĻĄā§āĻŽā§āĻ¨ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻāĻ°āĻž:
CLASS Customer 'ĐĐģиĐĩĐŊŅ';
contactName 'ФĐĐ' = DATA STRING[100] (Customer);
customer = DATA Customer (Order);
unitPrice = DATA NUMERIC[14,2] (Detail);
discount = DATA NUMERIC[6,2] (Detail);
āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ¯āĻŧ
SELECT ContactName, ProductName FROM (
SELECT c.ContactName, p.ProductName
, ROW_NUMBER() OVER (
PARTITION BY c.ContactName
ORDER BY SUM(od.Quantity * od.UnitPrice * (1 - od.Discount)) DESC
) AS RatingByAmt
FROM Customers c
JOIN Orders o ON o.CustomerID = c.CustomerID
JOIN [Order Details] od ON od.OrderID = o.OrderID
JOIN Products p ON p.ProductID = od.ProductID
WHERE YEAR(o.OrderDate) = 1997
GROUP BY c.ContactName, p.ProductName
) t
WHERE RatingByAmt < 3
āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§
sum (Detail d) = quantity(d) * unitPrice(d) * (1 - discount(d));
bought 'ĐŅĐŋиĐģ' (Customer c, Product p, INTEGER y) =
GROUP SUM sum(Detail d) IF
customer(order(d)) = c AND
product(d) = p AND
extractYear(date(order(d))) = y;
rating 'Đ ĐĩĐšŅиĐŊĐŗ' (Customer c, Product p, INTEGER y) =
PARTITION SUM 1 ORDER DESC bought(c, p, y), p BY c, y;
SELECT contactName(Customer c), name(Product p) WHERE rating(c, p, 1997) < 3;
PARTITION āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ¨ā§āĻ¤āĻŋ āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻāĻžāĻ āĻāĻ°ā§: āĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻā§āĻˇā§āĻ ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ SUM (āĻāĻāĻžāĻ¨ā§ 1) āĻāĻ° āĻĒāĻ°ā§ āĻāĻ˛ā§āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ āĻāĻŋāĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻā§ āĻ¯ā§āĻ āĻāĻ°ā§ (āĻāĻāĻžāĻ¨ā§ āĻā§āĻ°āĻžāĻšāĻ āĻāĻŦāĻ āĻŦāĻāĻ°, āĻ¤āĻŦā§ āĻ¯ā§ āĻā§āĻ¨āĻ āĻ āĻāĻŋāĻŦā§āĻ¯āĻā§āĻ¤āĻŋ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§), ORDER-āĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ āĻāĻŋāĻŦā§āĻ¯āĻā§āĻ¤āĻŋ āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻā§āĻ°ā§āĻĒāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŦāĻžāĻāĻžāĻ āĻāĻ°āĻž ( āĻāĻāĻžāĻ¨ā§ āĻā§āĻ¨āĻž, āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻ¸āĻŽāĻžāĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻĒāĻŖā§āĻ¯ āĻā§āĻĄ āĻĻā§āĻŦāĻžāĻ°āĻž)āĨ¤
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ
āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ āĻ°ā§āĻĄāĻžāĻ°āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻ¸āĻ°āĻŦāĻ°āĻžāĻšāĻāĻžāĻ°ā§āĻĻā§āĻ° āĻāĻžāĻ āĻĨā§āĻā§ āĻāĻ¤āĻā§āĻ˛āĻŋ āĻĒāĻŖā§āĻ¯ āĻ āĻ°ā§āĻĄāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻāĻŦāĻžāĻ° āĻĄā§āĻŽā§āĻāĻ¨ āĻ˛āĻāĻŋāĻ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻ¯āĻžāĻ:
CLASS Supplier 'ĐĐžŅŅавŅиĐē';
companyName = DATA STRING[100] (Supplier);
supplier = DATA Supplier (Product);
unitsInStock 'ĐŅŅĐ°ŅĐžĐē ĐŊĐ° ŅĐēĐģĐ°Đ´Đĩ' = DATA NUMERIC[10,3] (Product);
reorderLevel 'ĐĐžŅĐŧĐ° ĐŋŅОдаĐļи' = DATA NUMERIC[10,3] (Product);
āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§āĻ¯āĻŧ
select s.CompanyName, p.ProductName, sum(od.Quantity) + p.ReorderLevel â p.UnitsInStock as ToOrder
from Orders o
join [Order Details] od on o.OrderID = od.OrderID
join Products p on od.ProductID = p.ProductID
join Suppliers s on p.SupplierID = s.SupplierID
where o.ShippedDate is null
group by s.CompanyName, p.ProductName, p.UnitsInStock, p.ReorderLevel
having p.UnitsInStock < sum(od.Quantity) + p.ReorderLevel
āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§
orderedNotShipped 'ĐĐ°ĐēаСаĐŊĐž, ĐŊĐž ĐŊĐĩ ĐžŅĐŗŅŅĐļĐĩĐŊĐž' (Product p) =
GROUP SUM quantity(OrderDetail d) IF product(d) = p;
toOrder 'РСаĐēаСŅ' (Product p) = orderedNotShipped(p) + reorderLevel(p) - unitsInStock(p);
SELECT companyName(supplier(Product p)), name(p), toOrder(p) WHERE toOrder(p) > 0;
āĻāĻāĻāĻŋ āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°ā§āĻ¨
āĻāĻŦāĻ āĻļā§āĻˇ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻāĻŋ āĻŦā§āĻ¯āĻā§āĻ¤āĻŋāĻāĻ¤āĻāĻžāĻŦā§ āĻāĻŽāĻžāĻ° āĻāĻžāĻ āĻĨā§āĻā§āĨ¤ āĻāĻāĻāĻŋ āĻ¸āĻžāĻŽāĻžāĻāĻŋāĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻ¯ā§āĻā§āĻ¤āĻŋ āĻāĻā§. āĻŽāĻžāĻ¨ā§āĻˇ āĻāĻā§ āĻ āĻĒāĻ°ā§āĻ° āĻŦāĻ¨ā§āĻ§ā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŦāĻ āĻāĻā§ āĻ āĻĒāĻ°āĻā§ āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§, āĻāĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻāĻ°āĻāĻŽ āĻšāĻŦā§:
CLASS Person;
likes = DATA BOOLEAN (Person, Person);
friends = DATA BOOLEAN (Person, Person);
āĻŦāĻ¨ā§āĻ§ā§āĻ¤ā§āĻŦā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽā§āĻāĻžāĻŦā§āĻ¯ āĻĒā§āĻ°āĻžāĻ°ā§āĻĨā§āĻĻā§āĻ° āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻ°āĻ āĻāĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻāĻāĻžāĻŦā§, āĻāĻĒāĻ¨āĻžāĻā§ A, B, C āĻāĻŽāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ˛ā§āĻāĻā§ āĻā§āĻāĻā§ āĻŦā§āĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯ā§ A B āĻāĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻ¨ā§āĻ§ā§ āĻāĻŦāĻ B C āĻāĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻ¨ā§āĻ§ā§, A āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°ā§ C, āĻāĻŋāĻ¨ā§āĻ¤ā§ A C āĻāĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻ¨ā§āĻ§ā§ āĻ¨āĻ¯āĻŧāĨ¤
āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§, āĻā§āĻ¯ā§āĻ¯āĻŧāĻžāĻ°ā§āĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻāĻāĻ°āĻāĻŽ āĻšāĻŦā§:
SELECT Person a, Person b, Person c WHERE
likes(a, c) AND NOT friends(a, c) AND
friends(a, b) AND friends(b, c);
āĻĒāĻžāĻ āĻāĻā§ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛-āĻ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻ¸ā§āĻŦāĻžāĻ§ā§āĻ¨āĻāĻžāĻŦā§ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻžāĻ¨āĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻ§āĻžāĻ°āĻŖāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻžāĻ°āĻž āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°ā§ āĻ¤āĻžāĻĻā§āĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻ āĻ¨ā§āĻ āĻāĻŽ āĻŦāĻ¨ā§āĻ§ā§ āĻāĻā§āĨ¤ āĻ āĻ¤āĻāĻŦ, āĻ¤āĻžāĻ°āĻž āĻĒā§āĻĨāĻ āĻā§āĻŦāĻŋāĻ˛ā§ āĻāĻā§āĨ¤ āĻāĻāĻāĻŋ āĻ¸āĻĢāĻ˛ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻĻā§āĻāĻŋ āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§āĻ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻ¤āĻžāĻ° āĻŦāĻ¨ā§āĻ§ā§āĻ¤ā§āĻŦ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸āĻŽ āĻ¨āĻ¯āĻŧāĨ¤ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻāĻāĻŋ āĻĻā§āĻāĻ¤ā§ āĻāĻ°āĻāĻŽ āĻšāĻŦā§:
SELECT Person a, Person b, Person c WHERE
likes(a, c) AND NOT friends(a, c) AND
(friends(a, b) OR friends(b, a)) AND
(friends(b, c) OR friends(c, b));
UPD: āĻĒā§āĻ°āĻĨāĻŽ āĻāĻŦāĻ āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨
SELECT
pl.PersonAID
,pf.PersonAID
,pff.PersonAID
FROM Persons AS p
--ĐĐ°ĐšĐēи
JOIN PersonRelationShip AS pl ON pl.PersonAID = p.PersonID
AND pl.Relation = 'Like'
--ĐŅŅСŅŅ
JOIN PersonRelationShip AS pf ON pf.PersonAID = p.PersonID
AND pf.Relation = 'Friend'
--ĐŅŅСŅŅ ĐŅŅСĐĩĐš
JOIN PersonRelationShip AS pff ON pff.PersonAID = pf.PersonBID
AND pff.PersonBID = pl.PersonBID
AND pff.Relation = 'Friend'
--ĐŅŅ ĐŊĐĩ Đ´ŅŅĐļĐ°Ņ
LEFT JOIN PersonRelationShip AS pnf ON pnf.PersonAID = p.PersonID
AND pnf.PersonBID = pff.PersonBID
AND pnf.Relation = 'Friend'
WHERE pnf.PersonAID IS NULL
;WITH PersonRelationShipCollapsed AS (
SELECT pl.PersonAID
,pl.PersonBID
,pl.Relation
FROM #PersonRelationShip AS pl
UNION
SELECT pl.PersonBID AS PersonAID
,pl.PersonAID AS PersonBID
,pl.Relation
FROM #PersonRelationShip AS pl
)
SELECT
pl.PersonAID
,pf.PersonBID
,pff.PersonBID
FROM #Persons AS p
--ĐĐ°ĐšĐēи
JOIN PersonRelationShipCollapsed AS pl ON pl.PersonAID = p.PersonID
AND pl.Relation = 'Like'
--ĐŅŅСŅŅ
JOIN PersonRelationShipCollapsed AS pf ON pf.PersonAID = p.PersonID
AND pf.Relation = 'Friend'
--ĐŅŅСŅŅ ĐŅŅСĐĩĐš
JOIN PersonRelationShipCollapsed AS pff ON pff.PersonAID = pf.PersonBID
AND pff.PersonBID = pl.PersonBID
AND pff.Relation = 'Friend'
--ĐŅŅ ĐŊĐĩ Đ´ŅŅĐļĐ°Ņ
LEFT JOIN PersonRelationShipCollapsed AS pnf ON pnf.PersonAID = p.PersonID
AND pnf.PersonBID = pff.PersonBID
AND pnf.Relation = 'Friend'
WHERE pnf.[PersonAID] IS NULL
āĻāĻĒāĻ¸āĻāĻšāĻžāĻ°
āĻāĻāĻŋ āĻ˛āĻā§āĻˇ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¯ā§ āĻāĻžāĻˇāĻžāĻ° āĻāĻĒāĻ°ā§āĻ° āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸āĻāĻŋ āĻāĻĒāĻ°ā§āĻ° āĻ§āĻžāĻ°āĻŖāĻžāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĨ¤ āĻāĻāĻŋ āĻāĻ¸āĻāĻŋāĻāĻāĻ˛ āĻāĻŋāĻ˛ āĻ¯āĻž āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻŋāĻ˛ āĻāĻāĻŋāĻā§ āĻ¯āĻ¤āĻāĻž āĻ¸āĻŽā§āĻāĻŦ āĻ¤āĻžāĻ° āĻŽāĻ¤ā§ āĻāĻ°ā§ āĻ¤ā§āĻ˛āĻžāĨ¤ āĻ āĻŦāĻļā§āĻ¯āĻ, āĻā§āĻ āĻāĻŋāĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄā§āĻ° āĻ¨āĻžāĻŽ, āĻļāĻŦā§āĻĻā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ āĻĒāĻāĻ¨ā§āĻĻ āĻ¨āĻžāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻŽā§āĻ˛ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻšāĻ˛ āĻ§āĻžāĻ°āĻŖāĻž āĻ¨āĻŋāĻā§āĻāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻā§āĻāĻž āĻšāĻ¯āĻŧ, āĻāĻĒāĻ¨āĻŋ C ++ āĻāĻŦāĻ Python āĻāĻāĻ¯āĻŧāĻ āĻāĻāĻ āĻ¸āĻŋāĻ¨āĻā§āĻ¯āĻžāĻā§āĻ¸ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨āĨ¤
āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻ§āĻžāĻ°āĻŖāĻž, āĻāĻŽāĻžāĻ° āĻŽāĻ¤ā§, āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻāĻā§:
- āĻāĻ°āĻžāĻŽ. āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ āĻĒā§āĻā§āĻˇāĻžāĻā§āĻ¤ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻ¤ āĻ¸ā§āĻāĻ āĻ¯āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¸ā§āĻĒāĻˇā§āĻ āĻ¨āĻ¯āĻŧāĨ¤ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ°āĻ āĻāĻāĻŋāĻ˛ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ āĻ¸āĻš āĻāĻžāĻāĻā§āĻ˛āĻŋ) āĻĻā§āĻā§āĻ¨, āĻ¤āĻŦā§ āĻāĻŽāĻžāĻ° āĻŽāĻ¤ā§, āĻāĻ āĻāĻžāĻ¤ā§āĻ¯āĻŧ āĻĒā§āĻ°āĻļā§āĻ¨āĻā§āĻ˛āĻŋ āĻ˛ā§āĻāĻž āĻ āĻ¨ā§āĻ āĻ¸āĻšāĻāĨ¤
- ĐĐŊĐēĐ°ĐŋŅŅĐģŅŅиŅ. āĻāĻŋāĻā§ āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻŽāĻŋ āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨ āĻā§āĻˇāĻŖāĻž āĻāĻ°ā§āĻāĻŋ (āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻŦāĻŋāĻā§āĻ°ā§āĻ¤, āĻā§āĻ¨āĻž āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ), āĻ¯āĻž āĻĨā§āĻā§ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĢāĻžāĻāĻļāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ¯ā§āĻā§āĻ¤āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻĻā§āĻ¯āĻŧ, āĻ¯āĻĻāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻĻā§āĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ°āĻļā§āĻ˛āĻĻā§āĻ° āĻ¯ā§āĻā§āĻ¤āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¨āĻž āĻāĻ°ā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻĒāĻ¨āĻŋ āĻŦāĻŋāĻā§āĻ°āĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻŦāĻŋāĻā§āĻ°ā§āĻ¤ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻŋāĻ¨ā§āĻ¨ āĻŦāĻ¸ā§āĻ¤ā§ āĻĨā§āĻā§ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻŦāĻžāĻāĻŋ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻŦā§ āĻ¨āĻžāĨ¤ āĻšā§āĻ¯āĻžāĻ, RDBMS-āĻ āĻāĻāĻŋ CREATE VIEW āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻŦ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻāĻāĻžāĻŦā§ āĻ˛āĻŋāĻāĻ˛ā§ āĻā§āĻŦ āĻāĻāĻāĻž āĻĒāĻĄāĻŧāĻž āĻŽāĻ¨ā§ āĻšāĻŦā§ āĻ¨āĻžāĨ¤
- āĻā§āĻ¨ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŋāĻ āĻĢāĻžāĻāĻ āĻ¨ā§āĻ. āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻŦāĻ āĻā§āĻ˛āĻžāĻ¸ (āĻā§āĻŦāĻŋāĻ˛ āĻāĻŦāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°āĻā§āĻ˛āĻŋāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§) āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻžāĻ āĻāĻ°ā§āĨ¤ āĻā§āĻ˛āĻžāĻ¸āĻŋāĻā§āĻ¯āĻžāĻ˛ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻāĻ¯āĻŧā§āĻ° āĻŽāĻ¤ā§ āĻāĻāĻāĻāĻžāĻŦā§ (āĻ§āĻ°ā§ āĻ¨āĻŋāĻā§āĻāĻŋ āĻ¯ā§ āĻāĻāĻāĻŋ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāĻ¨ āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻāĻžāĻ°ā§ āĻĒā§āĻ°āĻĨāĻŽ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§)āĨ¤ āĻ¤āĻĻāĻ¨ā§āĻ¸āĻžāĻ°ā§, āĻ¸āĻžāĻ°ā§āĻŦāĻāĻ¨ā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻžāĻˇāĻžāĻ° āĻ¸āĻžāĻĨā§ "āĻŦāĻ¨ā§āĻ§ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž" āĻ
āĻ¨ā§āĻ āĻ¸āĻšāĻ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻāĻ āĻ§āĻžāĻ°āĻŖāĻž āĻāĻĒāĻ¨āĻŋ āĻāĻ°ā§ āĻ
āĻ¨ā§āĻ āĻāĻāĻŋāĻ˛ āĻĢāĻžāĻāĻļāĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨. āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻāĻĒāĻ¨āĻŋ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§ āĻāĻ āĻŽāĻ¤ āĻŦāĻŋāĻŦā§āĻ¤āĻŋ āĻāĻŽā§āĻŦā§āĻĄ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨:
CONSTRAINT sold(Employee e, 1, 2019) > 100 IF name(e) = 'ĐĐĩŅŅ' MESSAGE 'ЧŅĐž-ŅĐž ĐĐĩŅŅ ĐŋŅОдаĐĩŅ ŅĐģиŅĐēĐžĐŧ ĐŧĐŊĐžĐŗĐž ОдĐŊĐžĐŗĐž ŅОваŅĐ° в 2019 ĐŗОдŅ';
- āĻāĻ¤ā§āĻ¤āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° āĻāĻŦāĻ āĻŦāĻšā§āĻ°ā§āĻĒāĻ¤āĻž. āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ā§, āĻāĻĒāĻ¨āĻŋ CLASS ClassP āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻāĻžāĻ§āĻŋāĻ āĻāĻ¤ā§āĻ¤āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨: Class1, Class2 āĻāĻāĻžāĻ§āĻŋāĻ āĻĒāĻ˛āĻŋāĻŽāĻ°āĻĢāĻŋāĻāĻŽ āĻāĻ āĻ¨ āĻāĻŦāĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°ā§āĨ¤ āĻ āĻŋāĻ āĻāĻŋāĻāĻžāĻŦā§, āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻŽāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻ˛āĻŋāĻāĻŦ.
āĻ¯āĻĻāĻŋāĻ āĻāĻāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ§āĻžāĻ°āĻŖāĻž, āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻāĻžāĻāĻžāĻ¤ā§ āĻāĻŋāĻā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ āĻ¯ā§āĻā§āĻ¤āĻŋāĻā§ āĻ°āĻŋāĻ˛ā§āĻļāĻ¨āĻžāĻ˛ āĻ˛āĻāĻŋāĻā§ āĻ
āĻ¨ā§āĻŦāĻžāĻĻ āĻāĻ°ā§āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻ¯ā§āĻā§āĻ¤āĻŋ āĻāĻŦāĻ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ
āĻ¨ā§āĻ āĻāĻŋāĻā§ āĻ¸ā§āĻ¨ā§āĻĻāĻ°āĻāĻžāĻŦā§ āĻāĻāĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻ¸ā§āĻā§āĻ°ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻĒāĻžāĻ
āĻāĻ¤ā§āĻ¸: www.habr.com