Group by ΠΏΠΎ Π΄Π²ΡΠΌ ΠΏΠΎΠ»ΡΠΌ: ΠΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠ΄Π΅Π»Π°ΡΡ GROUP BY ΠΏΠΎ Π΄Π²ΡΠΌ ΠΏΠΎΠ»ΡΠΌ? | PHPClub
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ°
ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ
Π ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ
GROUP BY ΠΌΠΎΠΆΠ½ΠΎ
ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠ², ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ, ΡΠ°Π·Π΄Π΅Π»ΡΡ ΠΈΠΌΠ΅Π½Π°
ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ
ΡΠΏΠΈΡΠΊΠ° Π·Π°ΠΏΡΡΡΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΡΠ΅ΠΌ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎ
Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π³ΡΡΠΏΠΏΡ Π²Π½ΡΡΡΠΈ Π³ΡΡΠΏΠΏ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°
GROUP
BY Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π²ΡΠ±ΠΎΡΠ° β
Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ,
Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
ΠΡΠΈΠΌΠ΅Ρ
SQL:
SELECT region, sex, COUNT(*) AS num_clients
FROM tbl_clients
GROUP BY
region, sex
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ:
region | sex | num_clients |
California | f | 18 |
California | m | 15 |
Los Angeles | f | 42 |
Los Angeles | m | 57 |
New Jersey | f | 12 |
New Jersey | m | 21 |
New York | f | 15 |
New York | m | 18 |
Oregon | f | 15 |
Oregon | m | 18 |
Portland | f | 12 |
Portland | m | 32 |
Seattle | f | 37 |
Seattle | m | 40 |
Washington | f | 21 |
Washington | m | 11 |
Π‘Π½Π°ΡΠ°Π»Π° ΡΡΡΠΎΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ
ΠΏΠΎ Π³ΠΎΡΠΎΠ΄Π°ΠΌ, Π° Π·Π°ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½Π°Ρ Π³ΡΡΠΏΠΏΠ° ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΠΏΠΎΠ»Ρ
ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Π
ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ 16 Π³ΡΡΠΏΠΏ, ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡΠΎΠ². ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ
ΡΠ°ΠΊΠΎΠΌΡ
Π½Π°Π±ΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π°Π³ΡΠ΅Π³ΠΈΡΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ
Π³ΠΎΡΠΎΠ΄Π°
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΆΠ΅Π½ΡΠΊΠΎΠ³ΠΎ ΠΈ ΠΌΡΠΆΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»Π°.
ΠΠΎΠΌΠ°Π½Π΄Π° GROUP BY — Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠΊΠ΅ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΠΎΠΌΠ°Π½Π΄Π° GROUP BY ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠΊΠ΅
ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
.
Π ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π»ΡΠ±ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
(ΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ).
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ HAVING,
ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π½Π° Π³ΡΡΠΏΠΏΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GROUP BY.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
SELECT * FROM ΠΈΠΌΡ_ΡΠ°Π±Π»ΠΈΡΡ WHERE ΡΡΠ»ΠΎΠ²ΠΈΠ΅ GROUP BY ΠΏΠΎΠ»Π΅_Π΄Π»Ρ_Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ
ΠΡΠΈΠΌΠ΅ΡΡ
ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π±ΡΠ΄ΡΡ ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ workers, Π΅ΡΠ»ΠΈ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ½ΠΎΠ΅:
id Π°ΠΉΠ΄ΠΈ | name ΠΈΠΌΡ | age Π²ΠΎΠ·ΡΠ°ΡΡ | salary Π·Π°ΡΠΏΠ»Π°ΡΠ° |
---|---|---|---|
1 | ΠΠΈΠΌΠ° | 23 | 100 |
2 | ΠΠ΅ΡΡ | 23 | 200 |
3 | ΠΠ°ΡΡ | 23 | 300 |
4 | ΠΠΎΠ»Ρ | 24 | 1000 |
5 | ΠΠ²Π°Π½ | 24 | 2000 |
6 | ΠΠΈΡΠΈΠ»Π» | 25 | 1000 |
ΠΡΠΈΠΌΠ΅Ρ
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π³ΡΡΠΏΠΏΠΈΡΡΡΡΡΡ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΡ (Π±ΡΠ΄Π΅Ρ 3 Π³ΡΡΠΏΠΏΡ — 23 Π³ΠΎΠ΄Π°, 24 Π³ΠΎΠ΄Π° ΠΈ 25 Π»Π΅Ρ).
ΠΠ°ΡΠ΅ΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ SUM,
ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠΌΠΌΠΈΡΡΠ΅Ρ Π·Π°ΡΠΏΠ»Π°ΡΡ Π²Π½ΡΡΡΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π³ΡΡΠΏΠΏΡ.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π³ΡΡΠΏΠΏ (23 Π³ΠΎΠ΄Π°, 24 Π³ΠΎΠ΄Π° ΠΈ 25 Π»Π΅Ρ) Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°Π½Π° ΡΡΠΌΠΌΠ°ΡΠ½Π°Ρ
Π·Π°ΡΠΏΠ»Π°ΡΠ° Π²Π½ΡΡΡΠΈ ΡΡΠΎΠΉ Π³ΡΡΠΏΠΏΡ:
SELECT age, SUM(salary) as sum FROM workers GROUP BY age
SQL Π·Π°ΠΏΡΠΎΡ Π²ΡΠ±Π΅ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:
age Π²ΠΎΠ·ΡΠ°ΡΡ | sum ΡΡΠΌΠΌΠ° |
---|---|
23 | 600 |
24 | 3000 |
25 | 1000 |
ΠΡΠΈΠΌΠ΅Ρ
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ WHERE,
ΡΡΠΎΠ±Ρ Π²Π·ΡΡΡ Π½Π΅ Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ:
SELECT age, SUM(salary) as sum FROM workers WHERE id>=2 GROUP BY age
SQL Π·Π°ΠΏΡΠΎΡ Π²ΡΠ±Π΅ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:
age Π²ΠΎΠ·ΡΠ°ΡΡ | sum ΡΡΠΌΠΌΠ° |
---|---|
23 | 500 |
24 | 3000 |
25 | 1000 |
ΠΡΠΈΠΌΠ΅Ρ
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π³ΡΡΠΏΠΏΠΈΡΡΡΡΡΡ ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΡ (Π±ΡΠ΄Π΅Ρ 3 Π³ΡΡΠΏΠΏΡ — 23 Π³ΠΎΠ΄Π°, 24 Π³ΠΎΠ΄Π° ΠΈ 25 Π»Π΅Ρ).
ΠΠ°ΡΠ΅ΠΌ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ MAX,
ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π·Π°ΡΠΏΠ»Π°ΡΡ Π²Π½ΡΡΡΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π³ΡΡΠΏΠΏΡ:
SELECT age, MAX(salary) as max FROM workers GROUP BY age
SQL Π·Π°ΠΏΡΠΎΡ Π²ΡΠ±Π΅ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:
age Π²ΠΎΠ·ΡΠ°ΡΡ | max ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π·Π°ΡΠΏΠ»Π°ΡΠ° |
---|---|
23 | 300 |
24 | 2000 |
25 | 1000 |
ΠΡΠΈΠΌΠ΅Ρ
Π ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ MIN
Π½Π°ΠΉΠ΄Π΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π·Π°ΡΠΏΠ»Π°ΡΠ° Π²Π½ΡΡΡΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π³ΡΡΠΏΠΏΡ:
SELECT age, MIN(salary) as min FROM workers GROUP BY age
SQL Π·Π°ΠΏΡΠΎΡ Π²ΡΠ±Π΅ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:
age Π²ΠΎΠ·ΡΠ°ΡΡ | min ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π·Π°ΡΠΏΠ»Π°ΡΠ° |
---|---|
23 | 100 |
24 | 1000 |
25 | 1000 |
ΠΡΠΈΠΌΠ΅Ρ
Π ΡΠ΅ΠΏΠ΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ COUNT
Π½Π°ΠΉΠ΄Π΅ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² Π³ΡΡΠΏΠΏΠ΅:
SELECT age, COUNT(*) as count FROM workers GROUP BY age
SQL Π·Π°ΠΏΡΠΎΡ Π²ΡΠ±Π΅ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ:
age Π²ΠΎΠ·ΡΠ°ΡΡ | count ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ |
---|---|
23 | 3 |
24 | 2 |
25 | 1 |
GROUP BY ΠΏΠΎ Π΄Π²ΡΠΌ ΠΏΠΎΠ»ΡΠΌ (MySQL)
GANJAR
Π ΡΠ°Π±Π»ΠΈΡΠ΅ Π΅ΡΡΡ ΠΏΠΎΠ»Ρ email ΠΈ email_rec.
Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ GROUP BY ΡΠ°ΠΊ, ΡΡΠΎ Π±Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ» ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈΠ· Π΄Π°Π½Π½ΡΠΌΠΈ
ΡΠΈΠΏΠ°:
email — email_rec
email_rec — email
Π’ΠΎ Π΅ΡΡΡ ΠΏΠΎ 2-ΠΌ ΠΏΠΎΠ»ΡΠΌ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ°.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΏΠ°ΡΡΡ ΠΊΠ°ΠΊ Π²Ρ
ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠ°ΠΊ ΠΈ ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠ° ΠΏΠ΅ΡΠ²ΡΠΉ Π²Π·Π³Π»ΡΠ΄ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π²ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ, Π° ΡΠ΅ΠΉΡΠ°Ρ ΡΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ 5ΡΠΈ Ρ. Π Π½ΠΈ Π² ΠΊΠ°ΠΊΡΡβ¦
ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΎ (1). ΠΡΡΡ 2 ΠΏΠΎΠ»Ρ: ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ. ΠΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π²Ρ
ΠΎΠ΄ΡΡΠΈΡ
ΠΈ ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΡ
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
Π’ΠΎ Π΅ΡΡΡ
-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ [email protected] Π° ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ [email protected]
-Π²ΡΠΎΡΠΎΠΉ — ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ [email protected] Π° ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ [email protected]
Π ΠΈΡΠΎΠ³Π΅ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°Π½Ρ COUNT(*) AS ‘count_msg’
Π ΠΊΠ°ΠΊ ΡΠ°ΠΌ Π·Π°ΠΏΡΠΎΡ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΎΡΡΠ°Π²ΠΈΡΡ Ρ Π±Π΅Π· ΠΏΠΎΠ½ΡΡΠΈΡβ¦
ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΎ (2). |277|21|21|0|0|[email protected]| | |etsets|1297930874|1|0| |[email protected]|1
|387|21|21|0|103241|[email protected]|ΠΠΎΠ³Π΄Π°Π½| |qweqwe|1298387575|1|1| |[email protected]|1
|402|21|21|0|103241|[email protected]|ΠΠΎΠ³Π΄Π°Π½| |tsetseet|1298455480|1|0| |[email protected]|1
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ 2 ΠΈ 1
ΠΠΎΡΠΎΠΌΡ ΠΊΠ°ΠΊ 3 ΡΡΡΠΎΠΊΠ° Π² ΠΏΠΎΠ»Π΅ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΡΡΠ³ΠΎΠΉ email
ΠΡΡΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ 2ΠΌ ΠΏΠΎΠ»ΡΠΌ ΠΊΠΎΠ³Π΄Π° ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΏΠ°ΡΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΎ (3). Psevdonim, ΡΠ°ΠΊ Ρ ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΈ ΡΠ΄Π΅Π»Π°Π» ΡΠ½Π°ΡΠ°Π»Π°, Π½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π΅ ΡΠΎΡ ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ. ΠΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡΠΈΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠ°ΠΊ ΠΈ Π²Ρ
ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. Π Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ 2ΠΌ ΠΏΠΎΠ»ΡΠΌ Π΄Π°ΡΡ Π»ΠΈΡΡ ΠΏΠΎΠ΄ΡΡΠ΅Ρ Π»ΠΈΠ±ΠΎ Π²Ρ
ΠΎΠ΄ΡΡΠΈΡ
Π»ΠΈΠ±ΠΎ ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΡ
. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π²ΠΎ Π²Ρ
ΠΎΠ΄ΡΡΠΈΡ
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΡ
email ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ = email ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ, Π² ΠΈΡΡ
ΠΎΠ΄ΡΡΠΈΡ
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. Π ΡΡΠΎΠΌ ΠΈ Π²ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ
ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΎ (4). Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.
GROUP BY IF(’email’=»‘.$mail_acc[’email’].'», ’email_rec’, ’email’)
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π²ΡΠ΅ΠΌ ΠΎΡΠΏΠΈΡΠ°Π²ΡΠΈΠΌΡΡ.
ΠΠ³ΠΎΡΡN
ΠΡΠ»ΠΈ Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΠ», ΡΠΎ Ρ ΡΠ΅Π±Ρ Ρ ΡΠ΅ΠΌ ΡΡΠΎ ΡΡ Ρ ΠΎΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΅ΡΡΡ Π² Π±Π°Π·Π΅ ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π³ΡΡΠΏΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅ Π²ΡΠΉΠ΄Π΅Ρ, ΡΠ΅Π±Π΅ Π½Π°Π΄ΠΎ Π΄Π²Π° Π·Π°ΠΏΡΠΎΡΠ° ΠΏΠΈΡΠ°ΡΡ
ΠΠ²Π°Π½ ΠΠΎΠ²Π½ΠΎ
Π― Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ½ΡΠ».
upd. ΠΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌΡ ΠΏΠΈΡΡΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²ΡΠ΅Ρ Π΄Π²Π΅ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅?
ΠΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. ΠΠ°Π²Π°ΠΉ Π½Π°ΠΏΡΠΈΠΌΠ΅ΡΠ΅. Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠΈΡΠ΅ΠΌ, ΡΡΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅.
Psevdonim
SELECT count(*) AS ‘count_msg’, email, email_rec
FROM
GROUP BY email, email_rec
;
Π ΡΡΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ-ΡΠΎ?
Transact-SQL Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½ΡΡ GROUP BY | Info-Comp.ru
ΠΡ Ρ ΠΠ°ΠΌΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΠΏΠΎ SQL, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Transact-SQL, Π½ΠΎ ΠΌΡ Π½Π΅ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π»ΠΈ ΡΠ°ΠΊΡΡ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΡΠΎΡΡΡΡ ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½ΡΡ GROUP BY. ΠΠΎΡΡΠΎΠΌΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΌΡ Π½Π°ΡΡΠΈΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ group by Π΄Π»Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΠ½ΠΎΠ³ΠΈΠ΅ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ SQL, Π½Π΅ Π·Π½Π°ΡΡ ΠΎ ΡΠ°ΠΊΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΊ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° GROUP BY, Ρ ΠΎΡΡ ΡΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°ΡΡΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, Π² ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΈΠΌ Π½Π°Ρ ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ ΡΡΠΎΠΊ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ, ΠΏΠΎΡΠ²ΡΡΠ΅Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠΌΡ, ΡΡΠΎΠ±Ρ ΠΠ°ΠΌ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈ Π»Π΅Π³ΡΠ΅ Π½Π°ΡΡΠΈΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΡ Ρ ΡΡΠΈΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΠ΅ΡΡ. ΠΡΠ»ΠΈ ΠΠ°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π° ΡΠ΅ΠΌΠ° SQL, ΡΠΎ ΠΌΡ, ΠΊΠ°ΠΊ Ρ ΡΠΆΠ΅ ΡΠΊΠ°Π·Π°Π» ΡΠ°Π½Π΅Π΅, Π½Π΅ ΡΠ°Π· Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π»ΠΈ Π΅Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΡΠ°ΡΡΡΡ Π―Π·ΡΠΊ SQL β ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ JOIN ΠΈΠ»ΠΈ ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Union ΠΈ union all , ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ ΠΈ Ρ ΡΡΠΈΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠΌ.
Π Π΄Π»Ρ Π²ΡΡΡΠΏΠ»Π΅Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ΅ΠΎΡΠΈΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ GROUP BY
GROUP BY β ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ (ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΊΠΎΠΌΡ ΠΊΠ°ΠΊ ΡΠ΄ΠΎΠ±Π½Π΅ΠΉ) SQL Π΄Π»Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΠΏΠΎΠ»Ρ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² Π·Π°ΠΏΡΠΎΡΠ΅ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ sum, max, min, count ΠΈ Π΄ΡΡΠ³ΠΈΡ .
ΠΠ°ΠΊ ΠΡ Π·Π½Π°Π΅ΡΠ΅, Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½Π°Π±ΠΎΡΠΎΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ sum ΡΡΠΌΠΌΠΈΡΡΠ΅Ρ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π Π²ΠΎΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌ, ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ-ΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΈΠ»ΠΈ ΡΡΠ°Π·Ρ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌ, ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ group by, ΡΡΠΎΠ±Ρ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ»ΡΠΌ Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠ°ΠΊ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, Π½Π°Π³Π»ΡΠ΄Π½Π΅ΠΉ Π±ΡΠ΄Π΅Ρ ΡΡΠΎ Π²ΡΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ , ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅! ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°ΡΡ Π² Management Studio SQL ΡΠ΅ΡΠ²Π΅ΡΠ° 2008.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° GROUP BY
Π Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΡΠ»Π°ΡΡ Π½Π°ΡΠΈ Π·Π°ΠΏΡΠΎΡΡ select Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ group by. Π’Π°Π±Π»ΠΈΡΠ° ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π²ΡΠ΄ΡΠΌΠ°Π½Π½ΡΠ΅, ΡΠΈΡΡΠΎ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°.
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ°Π±Π»ΠΈΡΡ
CREATE TABLE [dbo].[test_table]( [id] [int] NULL, [name] [varchar](50) NULL, [summa] [money] NULL, [priz] [int] NULL ) ON [PRIMARY] GO
Π― Π΅Π΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ» ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ:
ΠΠ΄Π΅,
- Id βΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π·Π°ΠΏΠΈΡΠΈ;
- Name β ΡΠ°ΠΌΠΈΠ»ΠΈΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°;
- Summa- Π΄Π΅Π½Π΅ΠΆΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°;
- Priz β ΠΏΡΠΈΠ·Π½Π°ΠΊ Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² (Π΄ΠΎΠΏΡΡΡΠΈΠΌ 1- ΠΠΊΠ»Π°Π΄; 2-ΠΡΠ΅ΠΌΠΈΡ).
ΠΡΡΠΏΠΏΠΈΡΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π·Π°ΠΏΡΠΎΡΠ° group by
Π Π² ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ group by, Ρ.Π΅. Π³Π΄Π΅ ΠΏΠΈΡΠ°ΡΡ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ:
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
Select Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
From ΠΈΡΡΠΎΡΠ½ΠΈΠΊ
Where Π£ΡΠ»ΠΎΠ²ΠΈΡ ΠΎΡΠ±ΠΎΡΠ°
Group by ΠΏΠΎΠ»Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ
Having Π£ΡΠ»ΠΎΠ²ΠΈΡ ΠΏΠΎ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ
Order by ΠΏΠΎΠ»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ
Π’Π΅ΠΏΠ΅ΡΡ Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π΄Π΅Π½Π΅ΠΆΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΡ ΠΏΠΎΡΠ»Π΅ΠΌ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ Π·Π°ΠΏΡΠΎΡ:
SELECT SUM(summa)as summa FROM test_table WHERE name='ΠΠ²Π°Π½ΠΎΠ²'
Π Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ°, ΡΠΎ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅. Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΈΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎ, Π·Π°ΡΠ΅ΠΌ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ, Π΄Π° ΠΈ ΡΡΠΎ ΠΊΠ°ΠΊ-ΡΠΎ Π½Π΅ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ group by. ΠΠΈΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ:
SELECT SUM(summa)as summa, name FROM test_table GROUP BY name
ΠΠ°ΠΊ ΠΡ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΠΌΡ Π½Π΅ ΠΏΠΈΡΠ΅ΠΌ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ, ΠΈ Ρ Π½Π°Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΡΡΠ°Π·Ρ Π²ΡΠ΅ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΈ Ρ ΠΏΡΠΎΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ², ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅! Π‘ΡΠ°Π·Ρ ΠΎΡΠΌΠ΅ΡΡ ΡΠΎ, ΡΡΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅ΠΉ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ Π² Π·Π°ΠΏΡΠΎΡΠ΅ (Ρ.Π΅. ΠΏΠΎΠ»Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ), ΠΏΠΎΠΌΠΈΠΌΠΎ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΡΠΎΠ»ΡΠΊΠΎ ΠΆΠ΅ ΠΏΠΎΠ»Π΅ΠΉ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ group by. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅, ΠΏΠΎΡΡΠΎΠΌΡ Π² group by ΠΌΡ ΡΠΊΠ°Π·Π°Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅ (name), Π΅ΡΠ»ΠΈ Π±Ρ ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅ΠΉ, ΡΠΎ ΠΈΡ Π²ΡΠ΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ group by (Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ ΠΡ ΡΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅).
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ΡΡΠΈΡΠ°ΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· ΠΏΠΎΡΡΡΠΏΠ°Π»ΠΈ Π΄Π΅Π½Π΅ΠΆΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΠΌΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΡ Ρ ΠΎΠ±ΡΠ΅ΠΉ ΡΡΠΌΠΌΠΎΠΉ ΠΏΠΎΡΡΡΠΏΠΈΠ²ΡΠΈΡ ΡΡΠ΅Π΄ΡΡΠ². ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΊΡΠΎΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ sum Π±ΡΠ΄Π΅ΠΌ Π΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ count.
SELECT SUM(summa)as [ΠΡΠ΅Π³ΠΎ Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ²], COUNT(*) as [ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΠΉ], Name [Π‘ΠΎΡΡΡΠ΄Π½ΠΈΠΊ] FROM test_table GROUP BY name
ΠΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌ Π΄Π»Ρ Π½Π°ΡΠ°Π»ΡΡΡΠ²Π° ΡΡΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΎΠ½ΠΈ Π΅ΡΠ΅ ΠΏΡΠΎΡΡΡ, ΠΏΡΠΎΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΆΠ΅, Π½ΠΎ Π΅ΡΠ΅ Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΎΠΉ ΠΏΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΡ, Ρ.Π΅. ΡΡΠΎ ΡΡΠΎ Π·Π° Π΄Π΅Π½Π΅ΠΆΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° (ΠΎΠΊΠ»Π°Π΄ ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΌΠΈΡ), Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ»Π΅, ΠΈ Π΄Π»Ρ Π»ΡΡΡΠ΅Π³ΠΎ Π²ΠΎΡΠΏΡΠΈΡΡΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΠΏΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΡ, ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
SELECT SUM(summa)as [ΠΡΠ΅Π³ΠΎ Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ²], COUNT(*) as [ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΠΉ], Name [Π‘ΠΎΡΡΡΠ΄Π½ΠΈΠΊ] , Priz [ΠΡΡΠΎΡΠ½ΠΈΠΊ] FROM test_table GROUP BY name, priz ORDER BY name
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π²ΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΡΡΡ, Ρ.Π΅. ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅Π½Π΅Π³ ΠΏΠΎΡΡΡΠΏΠΈΠ»ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΡ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°.
Π ΡΠ΅ΠΉΡΠ°Ρ Π΄Π»Ρ Π·Π°ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ Π·Π°ΠΏΡΠΎΡ Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΎΠΉ, Π½ΠΎ Π΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΏΠΎΡΡΡΠΏΠΈΠ»ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ case.
SELECT SUM(summa) AS [ΠΡΠ΅Π³ΠΎ Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ²], COUNT(*) AS [ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΠΉ], Name [Π‘ΠΎΡΡΡΠ΄Π½ΠΈΠΊ], CASE WHEN priz = 1 then 'ΠΠΊΠ»Π°Π΄' WHEN priz = 2 then 'ΠΡΠ΅ΠΌΠΈΡ' ELSE 'ΠΠ΅Π· ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°' END AS [ΠΡΡΠΎΡΠ½ΠΈΠΊ] FROM test_table GROUP BY name, priz ORDER BY name
ΠΠΎΡ ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΠΈ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΡΠ»ΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ .
Π’Π°ΠΊΠΆΠ΅ Π΄Π°Π²Π°ΠΉΡΠ΅ Π·Π°ΡΡΠΎΠ½Π΅ΠΌ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΏΠΎ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ (having). ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π½Π΅ ΠΏΠΎ ΠΎΡΠ±ΠΎΡΡ ΡΠ°ΠΌΠΈΡ ΡΡΡΠΎΠΊ, Π° ΡΠΆΠ΅ Π½Π° ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ, Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ sum ΠΈΠ»ΠΈ count. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Ρ , Ρ ΠΊΠΎΡΠΎΡΡΡ Β«Π²ΡΠ΅Π³ΠΎ Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ²Β» Π±ΠΎΠ»ΡΡΠ΅ 200. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ having:
SELECT SUM(summa)as [ΠΡΠ΅Π³ΠΎ Π΄Π΅Π½Π΅ΠΆΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ²], COUNT(*) as [ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΠΉ], Name [Π‘ΠΎΡΡΡΠ΄Π½ΠΈΠΊ], CASE WHEN priz = 1 then 'ΠΠΊΠ»Π°Π΄' WHEN priz = 2 then 'ΠΡΠ΅ΠΌΠΈΡ' ELSE 'ΠΠ΅Π· ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°' END AS [ΠΡΡΠΎΡΠ½ΠΈΠΊ] FROM test_table GROUP BY name, priz --Π³ΡΡΠΏΠΏΠΈΡΡΠ΅ΠΌ HAVING SUM(summa) > 200 --ΠΎΡΠ±ΠΈΡΠ°Π΅ΠΌ ORDER BY name -- ΡΠΎΡΡΠΈΡΡΠ΅ΠΌ
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π²ΡΠ²Π΅Π»ΠΈΡΡ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ sum(summa), ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ 200, Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ.
ΠΠ°ΠΌΠ΅ΡΠΊΠ°! ΠΠ»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ° T-SQL ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΌΠΎΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΡΡΡΡ ΠΏΠΎ T-SQL.
ΠΠ°Π΄Π΅ΡΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½Π΅Π³ΠΎ ΡΡΠΎΠΊΠ° ΠΠ°ΠΌ ΡΡΠ°Π»ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ group by. Π£Π΄Π°ΡΠΈ! Π SQL ΠΌΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΠΈΠ·ΡΡΠ°ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ°ΡΡΡΡ .
ΠΡΠ°Π²ΠΈΡΡΡ2ΠΠ΅ Π½ΡΠ°Π²ΠΈΡΡΡ
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ
ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ GROUP BY Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΠ
ΡΠ»ΠΎΡ Π½Π° Π³ΡΡΠΏΠΏΡ. ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΠΎΠ»Π΅ΠΉ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, Π»ΠΈΠ±ΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠΎΠ»Π±ΡΠΎΠ² ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²ΡΠ±ΠΎΡΠΊΠΈ.
Π€ΠΎΡΠΌΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ: GROUP BY
<ΠΏΠΎΠ»Ρ Π΄Π°Π½Π½ΡΡ
>|<Π½ΠΎΠΌΠ΅ΡΠ° ΡΡΠΎΠ»Π±ΡΠΎΠ²>
. ΠΡΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ
Π΄Π°Π½Π½ΡΡ
Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎ ΠΏΠΎΠ»ΡΠΌ Π΄Π°Π½Π½ΡΡ
ΡΠ°Π±Π»ΠΈΡΡ, Π΅ΡΠ»ΠΈ ΠΆΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΡΡΠΎΠ»Π±ΡΠΎΠ² — ΡΠΎ ΠΏΠΎ
Π½ΠΎΠΌΠ΅ΡΠ°ΠΌ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ (Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ 1).
Π ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ GROUP BY ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ
ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ WHERE, ΠΏΠ΅ΡΠ΅Π΄ HAVING ΠΈ
ORDER.
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ Π°Π³ΡΠ΅Π³ΠΈΡΡΡΡΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. Π ΡΠ°ΠΊΠΎΠΌ
ΡΠ»ΡΡΠ°Π΅ Π°Π³ΡΠ΅Π³ΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ
Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ΅ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΠ»ΠΎΡ ΠΠ΄Π°Π½ΠΈΡ
ΠΏΠΎ ΠΏΠΎΠ»Ρ Π£Π»ΠΈΡΠ°
, Π²ΡΠ΅
Π·Π°ΠΏΠΈΡΠΈ ΠΠ ΡΠ»ΠΎΡ Π±ΡΠ΄ΡΡ ΡΠ°Π·Π±ΠΈΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π³ΡΡΠΏΠΏ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅ Π·Π°ΠΏΠΈΡΠΈ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ ΡΠ»ΠΈΡΠ΅ΠΉ.
Π, ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ COUNT Π² ΡΠ°ΠΊΠΎΠΌ Π·Π°ΠΏΡΠΎΡΠ΅, Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅.
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ (ΡΡΠΎΠ»Π±ΡΠ°ΠΌ). ΠΠΎΠ»Ρ
(ΡΡΠΎΠ»Π±ΡΡ) Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ»ΠΎΠ² GROUP BY.
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΠΏΠΎΠ»Ρ, Π·Π°ΡΠ΅ΠΌ, ΡΠΆΠ΅ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ
ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡΡΡ Π½Π° ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏΡ ΠΏΠΎ Π²ΡΠΎΡΠΎΠΌΡ ΠΏΠΎΠ»Ρ ΠΈ Ρ.Π΄.
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² Π·Π°ΠΏΡΠΎΡΠ΅ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ, ΡΡΠ΅Π΄ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ² Π²ΡΠ±ΠΎΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ
Π·Π°Π΄Π°Π²Π°ΡΡΡΡ Π°Π³ΡΠ΅Π³ΠΈΡΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈ ΠΏΠΎΠ»Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ°, Π»ΠΈΠ±ΠΎ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠ΅ ΡΡΠΈ ΠΏΠΎΠ»Ρ.
ΠΡΠΈΠΌΠ΅Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΏΠΎΠ»Ρ Π΄Π°Π½Π½ΡΡ
SELECT Π£Π»ΠΈΡΠ°, COUNT(*) FROM ΠΠ΄Π°Π½ΠΈΡ GROUP BY Π£Π»ΠΈΡΠ°
ΠΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ»ΠΈΡ ΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ»ΠΈΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π°ΠΏΠΈΡΠ΅ΠΉ.
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π½ΠΎΠΌΠ΅ΡΡ ΡΡΠΎΠ»Π±ΡΠ°
SELECT FLOOR(Area/10)*10, SUM(Area) FROM ΠΠ΄Π°Π½ΠΈΡ GROUP BY 1
ΠΡΡΠΏΠΏΠΈΡΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎ ΠΏΠ»ΠΎΡΠ°Π΄ΠΈ Π΄ΠΎΠΌΠΎΠ² (Ρ ΡΠ°Π³ΠΎΠΌ 10, Π² ΠΏΠ΅ΡΠ²ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅ Ρ 0 Π΄ΠΎ 10, Π²ΠΎ Π²ΡΠΎΡΠΎΠΉ Ρ
10 Π΄ΠΎ 20 ΠΈ Ρ.Π΄.) ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ Π³ΡΡΠΏΠΏ ΠΏΠ»ΠΎΡΠ°Π΄Π΅ΠΉ ΡΡΠΌΠΌΠ°ΡΠ½ΡΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΡ.
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ
SELECT COUNT(*) FROM ΠΠ΄Π°Π½ΠΈΡ GROUP BY ΠΠ²Π°ΡΡΠ°Π», Π£Π»ΠΈΡΠ°
ΠΡΡΠΏΠΏΠΈΡΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎ ΠΊΠ²Π°ΡΡΠ°Π»Π°ΠΌ, Π° Π² ΠΊΠ²Π°ΡΡΠ°Π»Π°Ρ
ΠΏΠΎ ΡΠ»ΠΈΡΠ°ΠΌ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π΄Π»Ρ
ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏΡ.
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΡ GROUP BY
ΠΡΠ΅ΠΌΡ ΠΏΡΠΎΡΡΠ΅Π½ΠΈΡ: 3 ΠΌΠΈΠ½.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²ΡΠΏΠΎΠΌΠ½ΠΈΠΌ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ GROUP BY
. ΠΡΠ°ΠΊ, GROUP BY
β ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² SQL Π΄Π»Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½ΡΡ
ΠΏΠΎ ΠΏΠΎΠ»Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π² Π·Π°ΠΏΡΠΎΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, SUM, MAX, MIN
ΠΈ Π΄.Ρ.) Π»ΠΈΠ±ΠΎ Π΄Π»Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊ (ΠΊΠ°ΠΊ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° DISTINCT
).
Π’Π΅ΠΏΠ΅ΡΡ ΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ GROUP BY
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΈΡΠΎΠ³ΠΈ ΠΈ ΠΈΡΠΎΠ³ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ β ROLLUP, CUBE
ΠΈ GROUPING SETS.
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Π΅ Π΄Π°Π½Π½ΡΠΌΠΈ.
CREATE TABLE #tmp
(
[eployee] nvarchar(10), --ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊ
[department] nvarchar(10), --ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅
[work_year] int, --Π³ΠΎΠ΄
[annual_income] money βΠ΄ΠΎΡ
ΠΎΠ΄
)
ΠΠ°ΡΠ½Π΅ΠΌ Ρ ROLLUP
, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π΅ΡΠ½Π΅Ρ Π½Π°ΠΌ ΠΎΠ±ΡΡΡ ΡΡΠΌΠΌΠΈΡΡΡΡΡΡ ΡΡΡΠΎΠΊΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΠ΄ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΈ ΠΈΡ
Π΄ΠΎΡ
ΠΎΠ΄ Π·Π° Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ Π·Π°ΠΏΡΠΎΡ:
SELECT
[department]
,COUNT(DISTINCT [eployee]) as employess_count
,SUM([annual_income]) as common_income
FROM #tmp
GROUP BY [department]
Π Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ² ΠΈ ΠΈΡ
ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΡΠΉ Π΄ΠΎΡ
ΠΎΠ΄? Π’ΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡΡ ΠΈ ΠΏΡΠΈΠ΄Π΅Ρ ROLLUP
.
SELECT
[department]
,COUNT(DISTINCT [eployee]) as employess_count
,SUM([annual_income]) as common_income
FROM #tmp
GROUP BY ROLLUP([department])
Π’Π°ΠΊΠΆΠ΅ ROLLUP
Π½Π°ΠΌ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΠΈΡΠΎΠ³ Ρ Π΄ΠΎΡ
ΠΎΠ΄ΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠ° Π·Π° Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ.
SELECT
[eployee]
,[work_year]
,SUM([annual_income]) as common_income
FROM #tmp
GROUP BY ROLLUP([eployee],[work_year])
Π‘ΡΡΠΎΠΊΠΈ, ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ ΠΊΡΠ°ΡΠ½ΡΠΌΠΈ ΡΡΡΠ΅Π»ΠΊΠ°ΠΌΠΈ, Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΌ ΠΈΡΠΎΠ³ΠΎΠΌ ΠΏΠΎ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΡ Π·Π° Π²ΡΠ΅ Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ, Π° ΡΠΈΠΎΠ»Π΅ΡΠΎΠ²ΡΠΌΠΈ β ΠΎΠ±ΡΠ°Ρ ΡΡΠΌΠΌΠΈΡΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ°.
Β Β Β Β Β Β Β Β Β Β Β Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ Π½Π° ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ β CUBE
. ΠΠ½ ΠΏΠΎΡ
ΠΎΠΆ Π½Π° ROLLUP
ΠΏΠΎ Π΄Π²ΡΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ ΠΈΠ· ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π·Π° ΡΠ΅ΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ, ΡΡΠΎ CUBE
Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΡΠΌΠΌΠΈΡΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π³ΡΡΠΏΠΏ.
SELECT
[eployee]
,[work_year]
,SUM([annual_income]) as common_income
FROM #tmp
GROUP BY CUBE([eployee],[work_year])
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΡΠ°ΡΠ½ΡΠΌΠΈ ΡΡΡΠ΅Π»ΠΊΠ°ΠΌΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΠΈΡΠΎΠ³ΠΈ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π³ΠΎΠ΄Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π² ΡΡΠΎΠΌ Π³ΠΎΠ΄Ρ, ΡΠΈΠ½ΠΈΠΌΠΈ β ΠΎΠ±ΡΠΈΠ΅ ΠΈΡΠΎΠ³ΠΈ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΡ Π·Π° Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ, Π° ΡΠΈΠΎΠ»Π΅ΡΠΎΠ²ΡΠΌΠΈ β ΠΎΠ±ΡΠ°Ρ ΡΡΠΌΠΌΠΈΡΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ°, ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ROLLUP
.
ΠΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π²ΠΈΠ΄Π΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΌΠΌΠΈΡΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ Π³ΡΡΠΏΠΏ? ΠΡΠ²Π΅Ρ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GROUPING SETS
. ΠΠ½, ΠΊΠ°ΠΊ ΠΈ ROLLUP
ΠΈ CUBE
, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΡΠΌΠΌΠΈΡΡΡΡΡΡ ΡΡΡΠΎΠΊΡ Π΄Π»Ρ Π³ΡΡΠΏΠΏ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ°ΠΌΠΈ Π³ΡΡΠΏΠΏΡ.
SELECT
[eployee]
,[work_year]
,SUM([annual_income]) as common_income
FROM #tmp
GROUP BY GROUPING SETS([eployee],[work_year])
Π’ΠΎ Π΅ΡΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ CUBE
, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½Ρ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΈΡΠΎΠ³ΠΈ ΠΈ ΠΎΠ±ΡΠΈΠΉ ΡΡΠΌΠΌΠΈΡΡΡΡΠΈΠΉ ΠΈΡΠΎΠ³.
ΠΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ GROUP BY
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π»Π΅Π³ΠΊΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΈΡΠΎΠ³ΠΈ, Π½Π΅ ΠΏΡΠΈΠ±Π΅Π³Π°Ρ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΎΠ±Π»Π΅Π³ΡΠ°Ρ ΠΊΠΎΠ΄.
SQL ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ GROUP BY β Oracle PL/SQL β’MySQL β’MariaDB β’SQL Server β’SQLite
Π ΡΡΠΎΠΌ ΡΡΠ΅Π±Π½ΠΎΠΌ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ SQL ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ GROUP BY Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
SQL ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ GROUP BY ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ SELECT Π΄Π»Ρ ΡΠ±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π·Π°ΠΏΠΈΡΡΠΌ ΠΈ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΡΠΎΠ»Π±ΡΠ°ΠΌ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° GROUP BY Π² SQL:
SELECT expression1, expression2, β¦ expression_n,
aggregate_function (aggregate_expression)
FROM tables
[WHERE conditions]
GROUP BY expression1, expression2, β¦ expression_n
[ORDER BY expression [ ASC | DESC ]];
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ
- expression1, expression2, β¦ expression_n
- ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² GROUP BY Π² ΠΊΠΎΠ½ΡΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΠ°.
- aggregate_function
- ΠΡΠΎ Π°Π³ΡΠ΅Π³Π°ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΠΊ SUM, COUNT, MIN, MAX ΠΈΠ»ΠΈ AVG.
- aggregate_expression
- ΠΡΠΎ ΡΡΠΎΠ»Π±Π΅Ρ ΠΈΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ aggregate_function.
- tables
- Π’Π°Π±Π»ΠΈΡΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π°ΠΏΠΈΡΠΈ. Π ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ FROM Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π° Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½Π° ΡΠ°Π±Π»ΠΈΡΠ°.
- WHERE conditions
- ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ. ΠΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ.
- ORDER BY expression
- ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² Π½Π°Π±ΠΎΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π·Π°ΠΏΡΡΡΠΌΠΈ.
- ASC
- ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ. ASC ΡΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΠΏΠΎ expression. ΠΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π½.
- DESC
- ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ. DESC ΡΠΎΡΡΠΈΡΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ±ΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ expression.
ΠΡΠΈΠΌΠ΅Ρ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ GROUP BY Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ SUM
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GROUP BY Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ SUM Π² SQL.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° employees ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ:
employee_number | first_name | last_name | salary | dept_id |
---|---|---|---|---|
1001 | Justin | Bieber | 62000 | 500 |
1002 | Selena | Gomez | 57500 | 500 |
1003 | Mila | Kunis | 71000 | 501 |
1004 | Tom | Cruise | 42000 | 501 |
ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ SQL ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ:
SELECT dept_id,
SUM(salary) AS total_salaries
FROM employees
GROUP BY dept_id;
SELECT dept_id, Β Β Β Β Β Β SUM(salary) AS total_salaries Β Β FROM employees GROUP BY dept_id; |
ΠΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½ΠΎ 2 Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅:
dept_id | total_salaries |
---|---|
500 | 119500 |
501 | 113000 |
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ SUM, ΡΡΠΎΠ±Ρ ΡΠ»ΠΎΠΆΠΈΡΡ Π²ΡΠ΅ Π·Π°ΡΠΏΠ»Π°ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ dept_id, ΠΈ ΠΌΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ SUM(salary) ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Β«total_salariesΒ». ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ dept_id Π½Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π½ Π² ΡΡΠ½ΠΊΡΠΈΡ SUM, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ GROUP BY.
ΠΡΠΈΠΌΠ΅Ρ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ GROUP BY Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ COUNT
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GROUP BY Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ COUNT Π² SQL.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ°Π±Π»ΠΈΡΠ° products ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ:
product_id | product_name | category_id |
---|---|---|
1 | Pear | 50 |
2 | Banana | 50 |
3 | Orange | 50 |
4 | Apple | 50 |
5 | Bread | 75 |
6 | Sliced Ham | 25 |
7 | Kleenex | NULL |
ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ SQL ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ:
SELECT category_id,
COUNT(*) AS total_products
FROM products
WHERE category_id IS NOT NULL
GROUP BY category_id
ORDER BY category_id;
SELECT category_id, Β Β COUNT(*) AS total_products Β Β FROM products WHERE category_id IS NOT NULL GROUP BY category_id ORDER BY category_id; |
ΠΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½ΠΎ 3 Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ:
category_id | total_products |
---|---|
25 | 1 |
50 | 4 |
75 | 1 |
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ COUNT Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° total_products Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ category_id, ΠΈ ΠΌΡ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Β«total_productsΒ» ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ COUNT. ΠΡ ΠΈΡΠΊΠ»ΡΡΠΈΠ»ΠΈ Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ category_id, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NULL, ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π² ΠΈΡ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ WHERE. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ category_id Π½Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π½ Π² ΡΡΠ½ΠΊΡΠΈΠΈ COUNT, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ GROUP BY.
ΠΡΠΈΠΌΠ΅Ρ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ GROUP BY Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ MIN
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GROUP BY Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ MIN Π² SQL.
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠ½ΠΎΠ²Π° Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΈΡΡ employees ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ:
employee_number | first_name | last_name | salary | dept_id |
---|---|---|---|---|
1001 | Justin | Bieber | 62000 | 500 |
1002 | Selena | Gomez | 57500 | 500 |
1003 | Mila | Kunis | 71000 | 501 |
1004 | Tom | Cruise | 42000 | 501 |
ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ SQL ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ:
SELECT dept_id,
MIN(salary) AS lowest_salary
FROM employees
GROUP BY dept_id;
SELECT dept_id, Β Β Β Β Β Β MIN(salary) AS lowest_salary Β Β FROM employees GROUP BY dept_id; |
ΠΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½ΠΎ 2 Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅:
dept_id | lowest_salary |
---|---|
500 | 57500 |
501 | 42000 |
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ MIN, ΡΡΠΎΠ±Ρ Π²Π΅ΡΠ½ΡΡΡ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ salary Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ dept_id, ΠΈ ΠΌΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ MIN ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Β«lowest_salaryΒ». ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ dept_id Π½Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π½ Π² ΡΡΠ½ΠΊΡΠΈΡ MIN, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ GROUP BY.
ΠΡΠΈΠΌΠ΅Ρ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ GROUP BY Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ MAX
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GROUP BY Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ MAX.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ½ΠΎΠ²Π° Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ employees, Π½ΠΎ Π½Π° ΡΡΠΎΡ ΡΠ°Π· Π½Π°ΠΉΠ΄Π΅ΠΌ ΡΠ°ΠΌΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π·Π°ΡΠΏΠ»Π°ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ dept_id:
employee_number | first_name | last_name | salary | dept_id |
---|---|---|---|---|
1001 | Justin | Bieber | 62000 | 500 |
1002 | Selena | Gomez | 57500 | 500 |
1003 | Mila | Kunis | 71000 | 501 |
1004 | Tom | Cruise | 42000 | 501 |
ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ SQL ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ:
SELECT dept_id,
MAX(salary) AS highest_salary
FROM employees
GROUP BY dept_id;
SELECT dept_id, Β Β MAX(salary) AS highest_salary Β Β FROM employees GROUP BY dept_id; |
ΠΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠ°Π½ΠΎ 2 Π·Π°ΠΏΠΈΡΠΈ. ΠΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ:
dept_id | highest_salary |
---|---|
500 | 62000 |
501 | 71000 |
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ MAX, ΡΡΠΎΠ±Ρ Π²Π΅ΡΠ½ΡΡΡ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ salary Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ dept_id, ΠΈ ΠΌΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΠ»ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Β«highest_salaryΒ» ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ MAX. Π‘ΡΠΎΠ»Π±Π΅Ρ dept_id Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ GROUP BY, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π½Π΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π½ Π² ΡΡΠ½ΠΊΡΠΈΠΈ MAX.
ΠΠ°ΠΊ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎ Π΄Π²ΡΠΌ ΠΏΠΎΠ»ΡΠΌ Π² ΠΊΡΠΈΡΡΠ°Π»Π»ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΡΠ΅ΡΠ°Ρ
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
- ΠΠΊΠΎΠ»ΠΎ
ΠΡΠΎΠ΄ΡΠΊΡΡ
- ΠΠ»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
ΠΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈ Π΄Π΅Π»ΡΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ°Π’Π°Π»Π°Π½Ρ
ΠΠ°Π½ΠΈΠΌΠ°ΠΉΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ Π±ΡΠ΅Π½Π΄ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»ΡΠ Π΅ΠΊΠ»Π°ΠΌΠ°
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ ΡΠΎ Π²ΡΠ΅Π³ΠΎ ΠΌΠΈΡΠ°
.
java — ElasticSearch — Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π΄Π²ΡΠΌ ΡΠ°Π·Π½ΡΠΌ ΠΏΠΎΠ»ΡΠΌ
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
- ΠΠΊΠΎΠ»ΠΎ
ΠΡΠΎΠ΄ΡΠΊΡΡ
- ΠΠ»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
ΠΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈ Π΄Π΅Π»ΡΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ°Π’Π°Π»Π°Π½Ρ
ΠΠ°Π½ΠΈΠΌΠ°ΠΉΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ Π±ΡΠ΅Π½Π΄ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»ΡΠ Π΅ΠΊΠ»Π°ΠΌΠ°
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ ΡΠΎ Π²ΡΠ΅Π³ΠΎ ΠΌΠΈΡΠ°- Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
ΠΠ°Π³ΡΡΠ·ΠΊΠ°β¦
- ΠΠ²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°ΡΡΡΡ
Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ
.
MongoDB ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Ρ Π²Π°Ρ Ρ Π³ΡΡΠΏΠΏΠΎΠΉ Mongodb ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ. Π§ΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΡΠ½Π°ΡΠ°Π»Π° ΠΌΡ ΡΠ·Π½Π°Π΅ΠΌ ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΡ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ MongoDB
Π€ΡΠ½ΠΊΡΠΈΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ GROUP BY Π΄Π»Ρ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠ³ΡΠ΅Π³Π°ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΡΡΡΠ΅ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ GROUP BY. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ.
ΠΠΎΠ³Π΄Π° Π°Π³ΡΠ΅Π³Π°ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π·Π°ΠΏΡΠΎΡΠ΅ Π±Π΅Π· ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ GROUP BY, Π°Π³ΡΠ΅Π³Π°ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π°Π³ΡΠ΅Π³ΠΈΡΡΠ΅Ρ Π²Π΅ΡΡ Π½Π°Π±ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² (Π²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ WHERE). ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GROUP BY, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅ SELECT ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Π°Π³ΡΠ΅Π³Π°ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GROUP BY Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΡΠΏΠΈΡΠΊΡ Π² ΡΠΏΠΈΡΠΊΠ΅ SELECT.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ GROUP BY, AVG Π² ΡΠΏΠΈΡΠΊΠ΅ SELECT ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ SUM, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΡΡΠΎΠ»Π±ΡΡ.
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ MongoDB ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π° ΠΏΠΎ ΡΡΠ»ΠΎΠ²ΠΈΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΡΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΡΠΌΠΌΠ°, ΡΡΠ΅Π΄Π½Π΅Π΅ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ±ΠΎΡΠ°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΄Π»Ρ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΈ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ .
ΠΡ ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² MongoDB ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ. ΠΠ° Π²ΡΡ ΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ². MongoDB ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° ΡΡΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ:
- Π’ΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ
- ΠΠΏΠ΅ΡΠ°ΡΠΈΡ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
- ΠΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ MapReduce
ΠΡΡΠΏΠΏΠ° Mongodb ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ $ group — ΡΡΠΎ Π°Π³ΡΠ΅Π³Π°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠ²ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ.Π£ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΡΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΏΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ $ + ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»Ρ.
Π§ΡΠΎΠ±Ρ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠ½ΡΡΡ Π³ΡΡΠΏΠΏΡ MongoDB ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² $ group:
- $ sum — Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΠΌΠΌΡ Π²ΡΠ΅Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ.
- $ avg — Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ ΡΡΠ΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ.
- $ min — Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ
- $ max — ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ.
- $ push — Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ Π² ΠΏΠΎΠ»Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
- $ addToSet — ΠΡΡΠ°Π²Π»ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, Π½ΠΎ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΠΎΠ².
- $ ΠΏΠ΅ΡΠ²ΡΠΉ — ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΈΠ· ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΡ , ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ.
- $ last — Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ.
Π’ΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ
Π ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ POSIX ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΎΠΌ, ΠΏΠΎΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π² ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.ΠΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ°ΠΏΠ°. ΠΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°ΠΏ.
Π€ΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»ΠΈΠΌΠ΅ΡΠ½ΠΎΠΉ ΡΡΡΠ±ΠΊΠΈ
ΠΡΡΠΈΠ»ΡΡΡΡΠΉΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΊΡΠΈΡΠ΅ΡΠΈΡΠΌ.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠΎΡΠΌΡ Π²ΡΠ²ΠΎΠ΄Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° Π°Π³ΡΠ΅Π³Π°ΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠ°ΠΏΠ°, ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΡΠ°ΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΡΠΌΠΌΡ, ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ, ΠΊΠΎΠ½ΠΊΠ°ΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠ°Π·ΡΡΠ²ΠΎΠ² ΡΡΡΠΎΠΊ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΡΠΎΠ²Π½Π΅ΠΌ.Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅, ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ Π²ΡΠ²Π΅ΡΡΠΈ ΠΈΠ»ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ.
ΠΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
- Db.collection.aggregate () ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ .
- Db.collection.aggregate () ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ MongoDB Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ°ΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠ°ΠΊ GroupBy Π² SQL, Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ JS.
- ΠΠ°ΠΆΠ΄Π°Ρ ΡΠ°Π·Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ 100 ΠΠ ΠΏΠ°ΠΌΡΡΠΈ.ΠΡΠ»ΠΈ ΠΎΠ΄Π½ΠΎΡΠ·Π»ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, MongoDB Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΡ. Π§ΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΌΡ Π΄Π°Π½Π½ΡΡ , ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΄Π»Ρ ΡΠ²ΠΎΠΉΡΡΠ²Π° allowDiskUse Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π΄Π»Ρ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ·Π»Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° ΠΈ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π² 100 ΠΠ.
- Db.collection.aggregate () ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΡΠ΅ΡΠΈΠΈ ΡΡΠ΅Π·ΠΎΠ², Π½ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡΠ΅ΡΡΠ½ Π² ΡΠ΅ΡΠΈΠΈ ΡΡΠ΅Π·ΠΎΠ². MapReduce ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΊ ΡΠ΅ΡΠΈΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ², ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡΠ΅ΡΡΠ½ Π² ΡΠ΅ΡΠΈΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ².
- Db.collection.aggregate () Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΡΡΡΠΎΡ, Π΄Π°Π½Π½ΡΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΊΠ°ΠΊ MongoShell.
- ΠΡΠ²ΠΎΠ΄ db.collection.aggregate () ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅, Π° ΡΠ°Π·ΠΌΠ΅Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° BSON ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ 16 ΠΠ.
ΠΠ΅ΡΠΎΠ΄ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ GROUP BY Π² SQL. ΠΡΡΠΏΠΏΠΎΠ²ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°:
- ΠΠ»ΡΡ: ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΊΠ»ΡΡ Π³ΡΡΠΏΠΏΡ
- ΠΠ°ΡΠ°Π»ΡΠ½ΡΠΉ: ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅Π΅ Π³ΡΡΠΏΠΏΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ²
- Π£ΠΌΠ΅Π½ΡΡΠΈΡΡ: ΡΡΠ½ΠΊΡΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π³ΡΡΠΏΠΏΡ.
- Keyf: Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΎΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
- Cond: Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ. Π£ΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΡΡΠΈΠ½Ρ, ΠΈΠ½Π°ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ΅. ΠΡΠ»ΠΈ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π΅ ΡΠΊΠ°Π·Π°Π½, Π²ΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ ΡΡΠ°ΡΡΠ²ΡΡΡ Π² Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ΅.
- ΠΠ°Π²Π΅ΡΡΠΈΡΡ: Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ.ΠΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠΎΠΌ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
`
js
> db.users.group ({key: {name: true}, Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅: {total: 0},
ΡΠΌΠ΅Π½ΡΡΠΈΡΡ: ΡΡΠ½ΠΊΡΠΈΡ (curr, res) {res.total + = 1}})
`
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ key ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π³ΡΡΠΏΠΏΠ° Π±ΡΠ΄Π΅Ρ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ: key: {name: true}
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π³ΡΡΠΏΠΏΡ.Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ. Π ΡΡΠΎΠΌ ΠΏΠΎΠ»Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Π³ΡΡΠΏΠΏΠ΅. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π±ΡΡΡ, ΠΌΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π½ΡΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ reduce ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ curr ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Π³ΡΡΠΏΠΏΠ΅, Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ res ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΡΡ Π³ΡΡΠΏΠΏΡ. ΠΡΠ»ΠΈ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΏΠΎΠ»Ρ ΠΈΠΌΠ΅Π½ΠΈ, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π² Π³ΡΡΠΏΠΏΡ ΠΈ ΡΠ²Π΅Π»ΠΈΡΡΡΠ΅ ΠΎΠ±ΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ res Π½Π° 1.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΡΠΏΠΏΡ $
$ group ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ _id Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠ»ΡΡΠ° Π΄Π»Ρ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ.ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΡΡΠ½ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π³ΡΡΠΏΠΏΡ Mongodb ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ.
1 | db.users.ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΡΠΉ ({ $ match: {age: {$ gte: 18}} }, { $ group: {_id: $ username, count: {$ sum: 1}} }); // ΠΡΡΠΏΠΏΠ° Mongodb ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ // $ sum: val ΠΠΎΠ±Π°Π²ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π΄Π±.users.aggregate ({ db.users.aggregate ({ // $ first: val Π‘ΡΠ°ΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ Π² Π³ΡΡΠΏΠΏΠ΅ |
ΠΡΡΠΏΠΏΠ° Mongodb ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π‘Π½Π°ΡΠ°Π»Π° Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΊΠ»ΡΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° Π³ΡΡΠΏΠΏΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡΡΠ°. ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΠ² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΡΡΠΏΠΏΠ΅.
ΠΡΡΠΏΠΏΠ° Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅ΡΡ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠΎΠ².ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ aggregate ΠΈΠ»ΠΈ mapReduce.
1 | db.collection.group (Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ) |
ΠΠΎΠ΄ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅
1 | ΠΠ«ΠΠ ΠΠ’Π¬ Π‘Π§ΠΠ’ (*) ΠΠ ΡΠΎΠ²Π°ΡΠΎΠ² GROUP BY category_id; |
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡΠ° ΡΡΠ°ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ Π³ΡΡΠΏΠΏΡ Mongodb ΠΏΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π°Π³ΡΠ΅Π³Π°ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ»ΠΈ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΡΡΡ ΡΡΠ°ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ ΠΏΠΎΡΠ΅ΡΠ°ΡΡ Object Rocket Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠ°ΡΠ΅ΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠΎΠ²Π΅Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠΎΡΡ Π² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡΡ ΠΈΠ»ΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π½Π°ΠΌ Π² Object Rocket.
.
oracle — SQL: ΠΊΠ°ΠΊ Π½Π°ΠΉΡΠΈ Π΄ΡΠ±Π»ΠΈΠΊΠ°ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ?
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
- ΠΠΊΠΎΠ»ΠΎ
ΠΡΠΎΠ΄ΡΠΊΡΡ
- ΠΠ»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ°
ΠΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ²Π΅ΡΡΠΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄
ΠΠ΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈ Π΄Π΅Π»ΡΡΡΡ ΡΠ°ΡΡΠ½ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈΠΠ°ΠΊΠ°Π½ΡΠΈΠΈ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ°Π’Π°Π»Π°Π½Ρ
ΠΠ°Π½ΠΈΠΌΠ°ΠΉΡΠ΅ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠ² ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ Π±ΡΠ΅Π½Π΄ ΡΠ°Π±ΠΎΡΠΎΠ΄Π°ΡΠ΅Π»ΡΠ Π΅ΠΊΠ»Π°ΠΌΠ°
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³Π°ΠΌ ΡΠΎ Π²ΡΠ΅Π³ΠΎ ΠΌΠΈΡΠ°- Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
ΠΠ°Π³ΡΡΠ·ΠΊΠ°β¦
.