π€ SQL Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ: Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π°Π½Π°Π»ΠΈΡΠΈΠΊ
ΠΠ»Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ° Π²Π°ΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΡ
Π±Π°Π·ΠΎΠ²ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ, Π½ΠΎ ΠΈ ΡΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ: Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡΡ, ΠΎΠΊΠΎΠ½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ. ΠΡΠΈ Π½Π°Π²ΡΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ ΠΈΠ½ΡΠ°ΠΉΡΡ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΈ ΡΡΡΠΎΠΈΡΡ ΠΎΡΡΠ΅ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π±ΠΎΠ»ΡΡΠΈΡ
ΠΎΠ±ΡΠ΅ΠΌΠΎΠ² Π΄Π°Π½Π½ΡΡ
.
Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠ³ΠΎΠ΄ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π°Π½Π°Π»ΠΈΡΠΈΠΊΡ. ΠΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅.
1. ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ΄Π°ΠΆ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΡ
ΡΡΠ½ΠΊΡΠΈΠΉ
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ°
sales
Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ:
sale_id
,
product_id
,
region
,
sale_date
,
amount
. ΠΡ Ρ
ΠΎΡΠΈΠΌ ΡΠ·Π½Π°ΡΡ ΠΎΠ±ΡΡΡ ΡΡΠΌΠΌΡ ΠΏΡΠΎΠ΄Π°ΠΆ ΠΈ ΡΡΠ΅Π΄Π½ΠΈΠΉ ΡΠ΅ΠΊ ΠΏΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°ΠΌ:
SELECT
region,
SUM(amount) AS total_sales,
AVG(amount) AS avg_check
FROM sales
GROUP BY region
ORDER BY total_sales DESC;
ΠΡΠΎΡ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅Π³ΠΈΠΎΠ½ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΡΡΡΠΊΠΈ.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π½Π°ΠΉΡΠΈ ΡΠΎΠ²Π°ΡΡ, ΠΏΡΠΎΠ΄Π°ΠΆΠΈ ΠΊΠΎΡΠΎΡΡΡ
Π½ΠΈΠΆΠ΅ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠΎΠ²Π°ΡΠ°ΠΌ:
SELECT product_id, SUM(amount) AS total_sales
FROM sales
GROUP BY product_id
HAVING SUM(amount) < (
SELECT AVG(total_sales)
FROM (
SELECT SUM(amount) AS total_sales
FROM sales
GROUP BY product_id
) AS subquery
);
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΎΠ΄Π°ΠΆ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΡΠΎΠ²Π°ΡΠ°ΠΌ ΠΈ ΡΠΈΠ»ΡΡΡΡΠ΅ΠΌ ΡΠ΅ ΡΠΎΠ²Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ Π½ΠΈΠΆΠ΅ ΡΡΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ.
3. ΠΠΊΠΎΠ½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΠ΅Π½Π΄ΠΎΠ²
ΠΠΊΠΎΠ½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π±Π΅Π· Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΊΡΠΌΡΠ»ΡΡΠΈΠ²Π½ΡΡ Π²ΡΡΡΡΠΊΡ (Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΡΠΎΠ³) ΠΏΠΎ Π΄Π°ΡΠ°ΠΌ:
SELECT
sale_date,
SUM(amount) OVER (ORDER BY sale_date) AS cumulative_sales
FROM sales;
Π’Π°ΠΊΠΎΠΉ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΡ ΡΠΎΡΡΠ° Π²ΡΡΡΡΠΊΠΈ Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄.
4. Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠΈΡ
ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠ²
Π§ΡΠΎΠ±Ρ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΏΡΠΎΠ΄Π°ΠΆΠΈ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΡΡΠ° Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΊΠΎΠ½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
SELECT
region,
DATE_TRUNC('month', sale_date) AS month,
SUM(amount) AS monthly_sales,
LAG(SUM(amount)) OVER (PARTITION BY region ORDER BY DATE_TRUNC('month', sale_date)) AS prev_month_sales,
SUM(amount) - LAG(SUM(amount)) OVER (PARTITION BY region ORDER BY DATE_TRUNC('month', sale_date)) AS sales_diff
FROM sales
GROUP BY region, DATE_TRUNC('month', sale_date)
ORDER BY region, month;
ΠΡΠΎΡ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΡ ΠΏΡΠΎΠ΄Π°ΠΆ ΠΏΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°ΠΌ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ΅ΡΡΡΠ°ΠΌΠΈ.
5. ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ Π΄Π²Π΅ ΡΠ°Π±Π»ΠΈΡΡ:
products
(Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΠΎΠ²Π°ΡΠ°Ρ
) ΠΈ
sales
(Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΠΏΡΠΎΠ΄Π°ΠΆΠ°Ρ
). Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠ²Π°ΡΠΎΠ² Ρ ΠΈΡ
ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΌΠΈ ΠΈ ΠΎΠ±ΡΠ΅ΠΉ ΡΡΠΌΠΌΠΎΠΉ ΠΏΡΠΎΠ΄Π°ΠΆ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ
JOIN
:
SELECT
p.product_name,
p.category,
SUM(s.amount) AS total_sales
FROM products p
LEFT JOIN sales s ON p.product_id = s.product_id
GROUP BY p.product_name, p.category
ORDER BY total_sales DESC;
Π’Π°ΠΊΠΎΠΉ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠ°Π±Π»ΠΈΡ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.
ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΡΠΈ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΡΠ²ΠΎΠΈΡ
Π΄Π°Π½Π½ΡΡ
ΠΈ ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ Π² ΠΈΡ
ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ! π