рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рджреБрдирд┐рдпрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд░рд┐рд▓реЗрд╢рдирд▓ DBMS рджреНрд╡рд╛рд░рд╛ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реА рдЧрдИ рд╣реИ рдЬреЛ SQL рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрддрдирд╛ рдХрд┐ рдЙрднрд░рддреА рд╣реБрдИ рдкреНрд░рдЬрд╛рддрд┐рдпреЛрдВ рдХреЛ NoSQL рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдЗрд╕ рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд╛рди рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рд▓реЗрдХрд┐рди рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреАрдмреАрдПрдордПрд╕ рдорд░рдиреЗ рд╡рд╛рд▓реЗ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдПрдХ рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╢рд╛рд╕реНрддреНрд░реАрдп рд╕рдВрдмрдВрдз рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░реВрдВрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рднрд┐рдиреНрди SQL рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкрд░рд┐рдЪрдп
рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдЯреЗрдмрд▓ рдФрд░ рдлреАрд▓реНрдб рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрди рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдлрд╝реАрд▓реНрдб рдПрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЙрд╕ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред 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)
)
, Sku, .
, , , .
/ / . , . , :
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)
)
, .
CREATE INDEX prices_date
ON prices
(skuId, storeId, supplierId, dateTime)
,
.
( ).
1.1
, .
select a.*
from employee a, employee b
where b.id = a.chief_id
and a.salary > b.salary
1.2
,
select a.*
from employee a
where a.salary = ( select max(salary) from employee b
where b.department_id = a.department_id )
. CREATE VIEW, . , .
1.3
ID , 3 .
select department_id
from employee
group by department_id
having count(*) <= 3
1.4
, , - .
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
1.5
ID .
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 )
. , MS SQL.
2.1
1997 30 тДЦ1?
( ):
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
2.2
(, ) (), 1997- .
:
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
PARTITION : , SUM ( 1), ( Customer Year, ), , ORDER ( bought, , ).
2.3
.
:
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
. . . :
. A, B, C , A B, B C, A C, A C.
:
SQL. , , . . . . :
UPD:
dss_kalika:
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
, тАФ . SQL, , . , - , . тАФ . C++, Python .
, :
- . , . (, ), , , .
- . (, sold, bought ..), . . , , sold , . , CREATE VIEW. , .
- . ( ). , ( , тАФ , ). , ┬л┬╗ . , . , :
- . CLASS ClassP: Class1, Class2 . , .
, , Java, . ,
. , ( PostgreSQL) ┬л ┬╗. , , . , , , .