ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

Запросы с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GROUP BY видоизмСняСт дСйствиС Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ запроса слСдуСт Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ΄Π½Ρƒ строку Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ вычисляСтся срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца SUMD ΠΏΠΎ Π²ΡΠ΅ΠΌ строкам, входящим Π² Π³Ρ€ΡƒΠΏΠΏΡƒ, ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ся ΠΎΠ΄Π½Π° итоговая строка… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Запросы с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

РассмотрСнныС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹Ρ… запросов относятся ΠΊΠΎ Π²ΡΠ΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΈ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ΄Π½Ρƒ строку. НапримСр, запрос.

SELECT AVG (SUMD) FROM PERSON.

вычисляСт ΡΡ€Π΅Π΄Π½Π΅Π΄ΡƒΡˆΠ΅Π²ΠΎΠΉ Π΄ΠΎΡ…ΠΎΠ΄ ТитСля.

Наряду с Ρ‚Π°ΠΊΠΈΠΌΠΈ «ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ» ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΌΠΈ запросами большой интСрСс ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹Π΅ запросы, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌ строк, Π° Π½Π΅ ΠΊΠΎ всСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅. Π­Ρ‚Ρƒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прСдоставляСт ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GROUP BY ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° SELECT. НапримСр, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΡ€Π΅Π΄Π½Π΅Π΄ΡƒΡˆΠ΅Π²ΠΎΠΉ Π΄ΠΎΡ…ΠΎΠ΄ ΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹ позволяСт Ρ‚Π°ΠΊΠΎΠΉ запрос:

SELECT ADR, AVG (SUMD) FROM PERSON.

GROUP BY ADR.

Π­Ρ‚ΠΎΡ‚ запрос Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ нСсколько ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹Ρ… строк — ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ строкС для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹. Π›ΠΎΠ³ΠΈΠΊΠ° выполнСния запроса ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ.

  • 1. БвСдСния ΠΎ ΠΆΠΈΡ‚Слях Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ PERSON дСлятся Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρƒ. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ всС ΠΆΠΈΡ‚Π΅Π»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΡΡ‚ΠΎΠ»Π±Ρ†Π΅ ADR.
  • 2. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ вычисляСтся срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца SUMD ΠΏΠΎ Π²ΡΠ΅ΠΌ строкам, входящим Π² Π³Ρ€ΡƒΠΏΠΏΡƒ, ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ся ΠΎΠ΄Π½Π° итоговая строка Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². Π­Ρ‚Π° строка содСрТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ столбца ADR для Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈ ΡΡ€Π΅Π΄Π½ΠΈΠΉ ΠΎΠ±Ρ‰ΠΈΠΉ Π΄ΠΎΡ…ΠΎΠ΄ для Π΄Π°Π½Π½ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹.

Запрос, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π² ΡΠ΅Π±Ρ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GROUP BY, называСтся запросом с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ. Π‘Ρ‚ΠΎΠ»Π±Ρ†Ρ‹, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π² ΡΡ‚ΠΎΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ столбцами Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΡƒ строки ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² Π³Ρ€ΡƒΠΏΠΏΡ‹. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ряд запросов с Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ:

1) сколько ΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ зарСгистрировано Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Π΅?

SELECT ADR, COUNT (*).

FROM PERSON GROUP BY ADR.

2) сколько источников Π΄ΠΎΡ…ΠΎΠ΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΆΠΈΡ‚Π΅Π»ΡŒ с Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ ΠΎΠ±Ρ‰ΠΈΠΌ Π΄ΠΎΡ…ΠΎΠ΄ΠΎΠΌ?

SELECT NOM, COUNT (ID) FROM HAVE_D GROUP BY NOM.

3) сколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… источников Π΄ΠΎΡ…ΠΎΠ΄Π° ΠΈΠΌΠ΅ΡŽΡ‚ ΠΆΠΈΡ‚Π΅Π»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹?

SELECT ADR, COUNT (DISTINCT ID).

FROM PERSON, HAVE_D.

WHERE PERSON. NOM = HAVE_D.NOM.

GROUP BY ADR.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ GROUP BY видоизмСняСт дСйствиС Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ запроса слСдуСт Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π³Ρ€ΡƒΠΏΠΏΡ‹, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π³Ρ€Π΅Π³Π°Ρ‚Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΎΠ΄Π½Ρƒ строку Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

SQL позволяСт Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строки с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ столбцов. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΆΠΈΡ‚Π΅Π»Π΅ΠΉ, Π½ΠΎ Π°Π΄Ρ€Π΅ΡΠ°ΠΌ ΠΈ Ρ„амилиям ΠΈ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сумму ΠΎΠ±Ρ‰ΠΈΡ… Π΄ΠΎΡ…ΠΎΠ΄ΠΎΠ² Ρƒ ΠΎΠ΄Π½ΠΎΡ„Π°ΠΌΠΈΠ»ΡŒΡ†Π΅Π² ΠΈ ΠΏΠΎΠ»Π½Ρ‹Ρ… Ρ‚Π΅Π·ΠΎΠΊ, ΠΏΡ€ΠΎΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… вмСстС:

SELECT ADR, FIO, SUM (SUMD) FROM PERSON GROUP BY ADR, FIO.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ